現在、多重起動防止のためのwindow強制終了の処理にて困っております。

プロセス名によせてPIDを取得しまくり、同プロセス名、違PIDのwindowを強制削除しまくる事で多重起動防止できると考え、調べてみました。検索すると沢山、同様の処理が出てまいりますので参考にしてみたところprocess.CloseMainWindowの箇所にて表題のエラーが発生します。

不思議と、成功する事もあるのでかえって厄介です。

以上、宜しくお願いいたします。

System.Diagnostics.Process hThisProcess = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.Process[] hProcesses = System.Diagnostics.Process.GetProcessesByName(hThisProcess.ProcessName);
int iThisProcessId = hThisProcess.Id;
foreach (System.Diagnostics.Process hProcess in hProcesses){
    if (hProcess.Id != iThisProcessId){
        if (!hProcess.CloseMainWindow()){
            hProcess.Kill(); 
        }
        else{
            Logger.Info("CloseMainWindow成功:" + hProcess.Id);
        }
    }
}