【问题标题】:Delete running executable删除正在运行的可执行文件
【发布时间】:2016-05-12 11:21:55
【问题描述】:

我有almost the same problem

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

(如果不是这个条件,我可以使用

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

然后删除文件 )

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

【问题讨论】:

  • 我不确定这些链接是不是好的,你不觉得吗?
  • if(!process.ProcessStartInfo.FileName.Contains("one"))process.Kill();也许?
  • @CallumBradbury 这会杀死其他带有 "one" 字样的进程。
  • 我正在寻找链接
  • @CallumBradbury 很好,但这一点仍然值得一提。

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


【解决方案1】:

听起来您正在尝试找出哪个进程对应于哪个 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);

【讨论】:

  • 有效!非常感谢,但我使用了 Path.GetFileNameWithoutExtension
猜你喜欢
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2023-03-17
  • 2020-10-29
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
相关资源
最近更新 更多