OS起動時にアプリケーションを自動的に実行する
- 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,991 views




