杀死资源管理器进程

本文关键字:进程 资源管理器 | 更新日期: 2023-09-27 18:31:15

奇怪,但也许我处理它的方式不正确 - 我需要非常简单地检查资源管理器.exe是否正在运行,如果是,请杀死它。但是,我目前实现此目的的方式,资源管理器.exe只是在我杀死它后重新启动。

通过批处理的正常任务杀死工作正常,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");
    }
}

杀死资源管理器进程

这是因为Windows会负责重新启动explorer.exe如果它碰巧死了。

可以延迟此行为(例如,Tortoisegit 的设置会这样做),但不建议这样做 - 用户会生气。

虽然不是 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);

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

抱歉,我没有任何示例代码,因为我不是 C# 程序员,但在我的应用程序中它工作得很好。

我使用了C++函数:

终止进程