インストールの開始時に実行され、アプリケーションが起動できるようにSOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Runパスにレジストリキーを作成する関数を作成しましたコンピュータが起動したとき。Visual Studioセットアッププロジェクトと起動パスにアプリケーションを配置する
この機能はXP/2003マシンでは機能しますが、Windows 7では機能しません。インストールアプリケーションWindowsサービスプログラムをインストールしているため、インストール中に権限が自動的に強化されます。だから私は何が間違ってやっているのだろうか?
private void RegisterInStartup(bool isChecked)
{
try
{
string t_registeryPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
RegistryKey registryKey =
Registry.LocalMachine.OpenSubKey(t_registeryPath, true);
if (registryKey == null)
registryKey = Registry.LocalMachine.CreateSubKey(t_registeryPath);
if (isChecked)
{
string tgt_dir = Context.Parameters["targetPath"];
if (!Directory.Exists(tgt_dir))
return;
string t_exeName = Path.Combine(tgt_dir, "AppTaskbarNotificator.exe");
if (!File.Exists(t_exeName))
return;
registryKey.SetValue("AppTaskbar", t_exeName);
}
else
{
registryKey.DeleteValue("AppTaskbar");
}
}
catch (Exception)
{
return;
}
}
、それは念頭に置いてアプリケーションのインストーラクラスでオーバーライドされたインストール機能に配置されています。ここでは
機能です。
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
System.Diagnostics.Debugger.Break();
RegisterInStartup(true);
StartApp();
}
ありがとうございます。
どこがバグですか? – Otiel
Windows 7にインストールしたときにレジストリエントリが作成されません。 – ArmenB
x86およびx64用の正しいレジストリキーがx64 Windows 7インストールでよく読まれていることを確認してください。あなたのコードがどこで失敗するかを決めましたか?そうでなければ...デバッグコードを追加してください。 –