2017-01-04 14 views
1

私は奇妙な問題に直面しています。 RunOnceキー(HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnce)に登録する実行ファイル(Exe1)があります Exe1は次回の再起動時に実行されます。 Exe1では、別の実行可能ファイル(Exe2)を起動するためにProcess.Start()を使用しています。構文はProcess.Startが2回実行されます

string Installer = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Exe2.exe"; 
Process.Start(Installer); 

奇妙なことに、Exe2は時々2回起動されることがあります。私はどのように把握することができません。 Exe1は起動時に一度だけ起動されます。私は確信しています - 私はこれらの手順を取っています。

  • 私はミューテックスを使用していますが、Exe1が存在する場合は、Process.Start()を呼び出す前にそのmutexが存在します。
  • 私はProcess.Start()を呼び出す前に、ログを書いて
  • が - それはまたEXE2がすでにProcess.GetProcessesて歩いてProcess.Start()の前に実行されている場合、一度だけ
  • 私もチェックしています記録しています()

これにもかかわらず、Exe2は2回起動されます。これは、再起動時にRunOnceから起動したときに発生します。私はExe1を直接起動しても起こりません。

は、それがあなたの問題に十分に近いかもしれないので、私は私が遭遇した問題に話すだろう任意のヘルプや有用な情報

+0

'Exe1が起動時に一度だけ起動された場合は、' Process.Start(Installer);を2回呼び出すように見えます - 私はあなたの場所ログに 'UniqueProcessId'と表示されます。打ち上げプロセス – RbMm

答えて

0

を感謝しています。まず、プロセスを開始すると予想されるどこにでもブレークポイントを設定しました。プロセスを続行せずに開始すると、私のコードがプロセスを他の場所で起動しました。

Process myProcess = Process.Start(startInfo); 
myProcess.Start(); 

私は2行目にブレークポイントを設定しましたが、明らかに私は最初の行でプロセスをトリガーしていました。コードが分散されていると、すばらしい(迷惑な)簡単な間違いが見つけにくいことがあります。この問題に誰かがぶつかるのを助けることを願っています。

関連する問題