如果我在日志文件中发现错误并重新启动它,我有杀死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