杀死资源管理器进程

时间:2013-09-14 17:58:50

标签: c# windows batch-file

奇怪,但也许我正在以错误的方式处理它 - 我需要非常简单地检查explorer.exe是否正在运行,如果是这样的话就杀了它。但是,我目前实现这一目标的方式,explorer.exe只是在我杀死它后重启。

正常的taskkill通过批处理工作正常,C#做了不同的事情吗?

private void Form1_Load(object sender, EventArgs e)
{
    Process[] prcChecker = Process.GetProcessesByName("explorer");
    if (prcChecker.Length > 0)
    {
        MessageBox.Show("Explorer running");
        foreach (Process p in prcChecker)
        {
            p.Kill();
        }
    }
    else
    {
        MessageBox.Show("Explorer is not running");
    }
}

3 个答案:

答案 0 :(得分:2)

这是因为如果碰到死亡,Windows会负责重新启动explorer.exe

可以延迟这种行为(例如,tortoisegit的设置会这样做),但不推荐 - 用户会生气。

答案 1 :(得分:1)

虽然不是C#方式,但您也可以尝试将注册表项HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoRestartShell设置为0以停止自动重启。

修改: -

在C#中尝试: -

RegistryKey ourKey = Registry.LocalMachine;
ourKey = ourKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
ourKey.SetValue("AutoRestartShell", 0);

答案 2 :(得分:0)

尝试使用退出代码adb devices终止进程。

对不起,我没有任何示例代码,因为我不是C#程序员,但在我的应用程序中它运行良好。

我使用了C ++函数:

TerminateProcess