2017-06-10 20 views
0

Windowsアプリケーションを作成しました。Windows起動時にアプリケーションを起動します。 インストーラクラスに次のコードを記述しました。しかし、私はレジストリを使用してレジストリをチェックしていますが、私はレジストリ値を取得しませんでした。私のアプリケーションは動作しません。レジストリ起動時にWindowsアプリケーションが動作しない

 public override void Commit(IDictionary savedState) 
     { 
      base.Commit(savedState); 


      try 
      { 
       RegistryKey add = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
       add.SetValue("ToposcreenServer", "\"" + Application.ExecutablePath.ToString() + "\""); 


       RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{70E25B31-99A9-474C-8990-CE28FBCEAAD1}", RegistryKeyPermissionCheck.Default); 
       if (key != null) 
       { 
        key.SetValue("SystemComponent", 1, RegistryValueKind.DWord); 
        key.Close(); 
       } 
       Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); 
       Process.Start(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\ToposcreenServer.exe"); 
       GLobalclass.WriteLog("Installer Executed"); 
      } 
      catch (Exception ex) 
      { 
       GLobalclass.WriteLog("Installer Error :" + ex.Message); 
      } 
     } 
+0

あなたのコードは、2つのレジストリ値を設定します。両方とも設定されていないのですか? – mjwills

+0

このコードを実行すると、ログには何が書き込まれますか( '実行済み'または 'エラー')? – mjwills

答えて

2

これがEveryoneインストールの場合、コードはインストールユーザーのものではなくシステムアカウントの資格情報で実行されているため、そのコードはインストールユーザーのHKCUに書き込まれません。

とにかく、Runキーを設定するコードは必要ありません。 IDEのレジストリビューに移動し、レジストリフォルダを追加してHKCUのRunキーを取得します。次に、実行可能ファイルがファイルシステムビューのアプリケーションフォルダにあると仮定して、Nama ToposcreenSaverと値[TARGETDIR] my.exeを持つアイテムを追加します。 UACシステムで標高が必要な場合は、実行されない可能性があります。

(このコードが実際にインストーラクラスに含まれている場合、インストーラクラスがmsiexec.exeプロセスから呼び出されたDllであり、何もしないため、なぜApplicationとExecuteablePathを使用しているのかはわかりません。インストールする実行ファイルの名前ですか?)

レジストリキーにSystemComponentを設定する必要はありません。そのレジストリキーは、カスタムアクションが実行される時があり、そして何が本当にやるべきことは、あなたのMSIはオルカとファイルとプロパティテーブルにARPSYSTEMCOMPONENTを追加開くには1.

https://msdn.microsoft.com/en-us/library/windows/desktop/aa367750(v=vs.85).aspx

の値を与えることでないかもしれません

アプリは本当にこれはそれを行うための最善の方法かもしれない従来のscreensaveの場合:

http://www.advancedinstaller.com/user-guide/qa-install-screensaver.html

関連する問題