如何停止然后在C#中启动explorer.exe?

时间:2012-07-09 22:45:34

标签: c# process explorer

所以我的电脑有很多错误。 99%的时间,他们是由explorer.exe愚蠢造成的。我可以手动阻止它们,但我想我可能能够设置一个自动停止并每10分钟左右启动一次的计划,所以我再也不会遇到任何问题了。我的代码不起作用,但无论如何我都会说:

foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
        {
            if (myProc.ProcessName == "explorer.exe")
            {
                myProc.Kill();
            }
        }

当我运行它时,绝对没有任何反应。 Visual Studio不会出错,程序不会崩溃等等。它什么都不做。

4 个答案:

答案 0 :(得分:4)

请避免使用the for-if anti-pattern

var explorers = Process.GetProcessesByName("explorer");
foreach (var thisExplorer in explorers)
{
    thisExplorer.Kill();
}

编辑:正如评论员在评论中所说。

答案 1 :(得分:0)

流程名称只是“资源管理器”

编辑: 这在我的盒子上做了伎俩:

foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
        {
            if (myProc.ProcessName == "explorer")
            {
                myProc.Kill();
            }
        }

答案 2 :(得分:0)

在假设你知道它包含什么之前,通常最好先查看一个partucular方法/属性的输出。

在这种情况下,myProc.ProcessName不包含进程的扩展名。所以比较“探险家”。

此外,在对其进行预处理时修改集合通常会导致运行时错误。

答案 3 :(得分:0)

您也可以使用Linq方式

List<Process> processes = Process.GetProcesses().Where(p => p.ProcessName == "explorer").ToList();

foreach (var process in processes)
{
  process.Kill();
}