以前より趣味でDelphiで開発をいこなっております。
このたび、初めてレジストリというものを触ってみようと思います。
私の製作した、アプリをログイン時に起動させようと思い、調べたところ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
コチラに追加したら良いとのことなのですが、
例えば
C:\test.exe を上記のレジストリに記入して起動させる方法を
よろしくお願いします。
XPだとできたのですが、VISTAだと失敗しましたになります。
誰かわかる人いますか?
レジストリへのアクセスに関しては、TRegistry を使用すれば
よいかと思います。
あ、レジストリへのアクセスに関しては解決したみたいですね。
失礼しました。
igy様ありがとうございます。
どうやらVISTAだと普通にしたら失敗するみたいです。
書き込む際の権限関係ですょうか?
>書き込む際の権限関係ですょうか?
Vista に関しては詳しくないのですが、
ソースコード上で、何をしている箇所で、エラーが表示するのですか?
コンパイルは無事にすみます、XPでも正常に動作します、
VISTAですと、レジストリに書き込む動作で書き込みに失敗という、WINSOWSの警告窓がでます。
書き込む際の権限ですね、以前この掲示板でVISTAではSystem32へのファイルの書き込みができないという物もありました。
書き込み当の作業を管理者権限でおこないたいのですが。。。
アイコンに盾のマークを付けるには?
https://www.petitmonte.com/bbs/answers?question_id=5815
にあるような方法で、管理者権限で動作させてみるのはどうでしょう?
すいません拝見させていただきましたが、いまいち意味が・・・
アプリを実行した後に管理者権限にエレベーションさせるということでしょうか?
方法をお願いします。
したい事は、
作成したアプリをVistaでは管理者権限で動作させる
というので、よろしいのですよね。
それでしたら、
先ほどの“アイコンに盾のマークを付けるには?”にもあります。
Delphiで作成したアプリケーションをマニフェストにて管理者権限ダイアログを表示するには
http://mam.dnsalias.net/mytech/show.php?cd=96
でどうでしょう?
やはり、どうしても管理者権限ダイアログはでてしまうのですか?
> やはり、どうしても管理者権限ダイアログはでてしまうのですか?
Vistaはそういう仕様です。
UACでも無効にしてあれば、出ないはずだけど。
どうしても
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
じゃないとダメですか?
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
でも良いのであれば、下記の方法で、VISTA でも XP でも問題なくレジストリを読み書きできます。
VISTA では UAC の影響を受けずに、確認なしで動作しています。
レジストリの読み込み時にキーが存在しなかった場合のデフォルト値も指定できるので便利です。
※ただし、HKEY_CURRENT_USER にしかアクセスできないようです。
uses Registry;
private
{ Private declarations }
inifile: TRegIniFile;
// レジストリ読み込み
begin
inifile := TRegIniFile.Create('SoftWare\HogoCorp');
With inifile do
begin
Label1.Caption := ReadString('HogeSoft', 'String1', 'デフォルト値');
Label2.Caption := ReadString('HogeSoft', 'String2', 'デフォルト値');
end;
inifile.free;
end;
// レジストリ書き込み
begin
inifile := TRegIniFile.Create('SoftWare\HogeCorp');
With inifile do
begin
WriteString('HogeSoft', 'String1', Label1.Caption);
WriteString('HogeSoft', 'String2', Label2.Caption);
end;
end;
ちょっとサンプルが適切でなさそうなので訂正です。
問題なく書き込めました。D2007 Pro + VISTA
procedure TForm1.Button1Click(Sender: TObject);
begin
inifile := TRegIniFile.Create('SOFTWARE\Microsoft\Windows\CurrentVersion');
With inifile do
begin
WriteString('Run', 'test', 'c:\text.exe');
end;
end;
ツイート | ![]() |