我在文件夹c:\ one中有两个文件a.exe,在c:\ two中有a.exe,两者都在运行,但我只想在第一个文件夹中删除该文件
(如果不是这种情况,我可以使用
foreach (var process in Process.GetProcessesByName("a.exe"))
process.Kill();
然后删除该文件 )
For almost the same problem是RunOnce注册表项的答案,但我不在乎用户是否登录,我只是想立即将其删除。你能救我吗?
答案 0 :(得分:2)
听起来你正在试图找出哪个进程对应于a.exe的哪个实例?
似乎可以使用Process.MainModule.FileName
属性执行此操作:
var exeToDelete = "...";
var exeProcess = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(exeToDelete))
.SingleOrDefault(p => StringComparer.OrdinalIgnoreCase.Equals(p.MainModule.FileName, exeToDelete));
if (exeProcess != null) { exeProcess.Kill(); }
File.Delete(exeToDelete);