如果我在日誌文件中發現錯誤並重新啓動它,我有殺死exe的要求。這裏的主要問題是,我不能只刪除基於名稱的EXE,因爲我有不同的文件夾運行相同的EXE,如D:\ A \ A1.exe和D:\ B \ A1.exe。我只想從「A」文件夾中刪除exe文件。如何殺死具有特定位置的進程exe#C#
我試圖按照Dirk Vollmar的解決方案(https://stackoverflow.com/a/2238316/5159431)。
,這個問題 - C# Process Killing
但是,當我調試他的解決方案,我發現hModuleSnap變量是無效的。
更新 - 1
至於米奇的建議,我已經使用了西蒙的回答。它確實殺死了exe(謝謝)。但是,我收到一條錯誤消息:「System.ComponentModel.Win32Exception:只有ReadProcessMemory或WriterocessMemory請求的一部分已完成」。
以下是示例代碼。
string path1 = @"F:\Software\Application\Runner.exe";
try
{
Process[] runningProcesses = Process.GetProcesses();
foreach (Process process in runningProcesses)
{
// now check the modules of the process
foreach (ProcessModule module in process.Modules)
{
if (module.FileName.Equals(path1))
{
process.Kill();
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Console.ReadLine();
}
_「System。ComponentModel.Win32Exception「_--我在枚舉某些OS ProcessModule時遇到過這種情況,您可以通過不直接讀取'process.MainModule'而直接枚舉'process.Modules'來修復它。更高效,更重要的是**無例外* *。你也不應該用一個新的問題來更新你的問題 - 作爲_new問題_留下你原來的問題沒有改變:) – MickyD