如何在Windows 8.1中结束explorer.exe(每次重启都会重启)

时间:2015-06-09 03:59:08

标签: c# vb.net explorer taskkill

所以我正在编写一个需要在安装之前结束explorer.exe的应用程序。但是,使用以下代码时,Windows会自动重新启动该过程:

Dim proc() = System.Diagnostics.Process.GetProcessesByName("explorer.exe")
For Each item as Process in proc()
item.Kill()
Next

由于这个问题,我找到了一种使用taskkill杀死explorer.exe的方法,这里的代码非常合适:

Dim taskkill as New ProcessStartInfo
taskkill.FileName = "cmd.exe"
taskkill.Arguments = "/c taskkill /F /IM explorer.exe"
taskkill.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(taskkill)

但我不想依赖cmd.exe来完成这项任务?有人可以告诉我如何使用vb.net或c#代码吗?

感谢。

2 个答案:

答案 0 :(得分:1)

这可能不是发布其他答案的好习惯,所以请原谅我,我只是想通过为您的问题提供一些小问题来指导您。这个答案实际上来自superuser t3hn00b提供的所有信用

首先,Windows(Windows 7和XP)使用注册表项自动重启资源管理器进程。因此要禁用我们必须以编程方式重置该密钥的值,我们可以使用该代码。

        Dim key As Microsoft.Win32.Registry
        Dim ourkey As Microsoft.Win32.RegistryKey
        ourkey = key.LocalMachine
        ourkey = ourkey.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
        ourkey.SetValue("AutoRestartShell", 0)
        ' Kill the explorer by the way you've post and do your other work
        ourKey.SetValue("AutoRestartShell", 1)

或在C#中

RegistryKey ourKey = Registry.LocalMachine;
ourKey = ourKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
ourKey.SetValue("AutoRestartShell", 0);
// Kill the explorer by the way you've post and do your other work
ourKey.SetValue("AutoRestartShell", 1)

无论如何,我不建议更改具有备选方案的问题的Windows默认设置(使用cmd.exe)。

代码会有错误,请原谅我。只是尝试给你的问题一点开始。检查它,它被证明在win7和XP中运行良好。您可以在上面的超级用户链接中查看更多详细信息。希望它会有所帮助。感谢t3hn00b

答案 1 :(得分:0)

在vb.net中杀死explorer.exe你可以使用

    Try
        Dim Processes() As Process = Process.GetProcessesByName("explorer")
        For Each Process As Process In Processes
            Process.Kill()
        Next
    Catch ex As Exception
    End Try

仅当您将代码放入计时器并在想要杀死explorer.exe时启动计时器时,此功能才有效。

在c#中,请确保您还将其置于计时器中并在您想要杀死explorer.exe时启动它

try {
    Process[] Processes = Process.GetProcessesByName("explorer");
    foreach (Process Process in Processes) {
        Process.Kill();
    }
} catch (Exception ex) {
}

希望这有帮助。