删除正在运行的

时间:2016-05-12 11:21:55

标签: c# exe delete-file kill-process

我有almost the same problem

我在文件夹c:\ one中有两个文件a.exe,在c:\ two中有a.exe,两者都在运行,但我只想在第一个文件夹中删除该文件

(如果不是这种情况,我可以使用

foreach (var process in Process.GetProcessesByName("a.exe"))
                process.Kill();

然后删除该文件 )

For almost the same problem是RunOnce注册表项的答案,但我不在乎用户是否登录,我只是想立即将其删除。你能救我吗?

1 个答案:

答案 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);