Windows の起動時に特定のプロセスを実行する必要があるアプリケーションを作成しました。プログラムへのパスを受け取り、それをレジストリに追加することでそれを行うメソッドを作成しました。これは方法です:
private void AddPathToStartUpPrograms(string path)
{
string startUpPosition1 = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
string startUpPosition2 = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce";
RegistryKey k = Registry.LocalMachine.OpenSubKey(startUpPosition1, true);
if (k != null)
{
k.SetValue("service", path);
}
k = Registry.LocalMachine.OpenSubKey(startUpPosition2, true);
if (k != null)
{
k.SetValue("service", path);
}
}
このコードは機能していますが、問題は、追加したプロセスがデスクトップの読み込みを停止させているように見えることです。デスクトップの読み込み中に背景の壁紙が読み込まれますが、アイコンは読み込まれません。タスク マネージャーにアクセスできます。起動プログラムに追加したプロセスを閉じると、デスクトップが「フリーズ」し、すべての読み込みが完了します。
奇妙なことに、プロセスを閉じても、デスクトップの読み込みが完了した後、プロセスが再び実行され、すべてが正常に実行されます。つまり、何らかの理由で 2 回実行されます。
私の質問は、デスクトップの読み込みが完了した後にのみプロセスを実行するように設定するにはどうすればよいですか?