Categories
SugiBlog ホームページ制作・システム開発

OS起動時にアプリケーションを自動的に実行する

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);
178 views

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*