- VisualC#
- 2017-03-31
この記事は最終更新日から1年以上経過しています。
OS起動時にアプリケーションを自動的に実行するには、通常ならスタートアップに登録しますが、
アプリケーションから登録したい場合は、レジストリキーに登録する必要があります。
登録するキーは以下のようになります。
起動時に毎回実行する場合
Software\Microsoft\Windows\CurrentVersion\Run
次回起動時に1度だけ実行する場合
Software\Microsoft\Windows\CurrentVersion\RunOnce
レジストリキーを開きます。
第1引数は設定するキーのパス、第2引数は書き込み可能な状態で開くかどうかを指定します。
Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( @"Software\Microsoft\Windows\CurrentVersion\RunOnce", true);
キーに値を設定します。
第1引数はアプリケーション名、第2引数は実行ファイルまでのパスです。
regkey.SetValue(Application.ProductName, Application.ExecutablePath);
キーを閉じます。
regkey.Close();
まとめるとこのようになります。
削除するコードも入れていますので、実行をやめたい時に実行してください。
class Regi { /* * OS起動時にアプリケーションを自動的に実行するため * レジストリを操作 * 一度だけ実行するため、RunOnceで書き込む */ public static void SetRegKey() { try { Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( @"Software\Microsoft\Windows\CurrentVersion\RunOnce", true); regkey.SetValue(Application.ProductName, Application.ExecutablePath); regkey.Close(); } catch { } } public static void DeleteRegKey() { try { Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( @"Software\Microsoft\Windows\CurrentVersion\RunOnce", true); regkey.DeleteValue(Application.ProductName, false); regkey.Close(); } catch { } } }
上記はカレントユーザーの設定になります。
全てのユーザーに反映したい場合は以下のようにしてください。
※CurrentUserがLocalMachineに変わっています。
Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey( @"Software\Microsoft\Windows\CurrentVersion\RunOnce", true);
7,674 views