如何在 Windows 8.1 中结束 explorer.exe(每次我这样做都会重新启动)

Posted

技术标签:

【中文标题】如何在 Windows 8.1 中结束 explorer.exe(每次我这样做都会重新启动)【英文标题】:How to end explorer.exe in Windows 8.1 (It restarts each time I do so) 【发布时间】:2015-08-23 17:20:18 【问题描述】:

所以我正在编写一个需要在安装前结束 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# 代码做到这一点?

谢谢。

【问题讨论】:

哇。先退一步。您如何确定需要在安装之前结束 explorer?您是否见过 任何 其他安装程序会在安装前杀死资源管理器?是什么让您认为您的应用需要这样做? 使用安装程序安装您的应用程序 【参考方案1】:

在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) 

希望这会有所帮助。

【讨论】:

很好的解决方案!!为我工作出色【参考方案2】:

这可能不是发布其他答案的好习惯,所以请原谅我,我只是想通过为您的问题提供一点指导来指导您。这个答案实际上来自t3hn00b提供的superuser..所有学分都归功于他

首先,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。

【讨论】:

以上是关于如何在 Windows 8.1 中结束 explorer.exe(每次我这样做都会重新启动)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Windows 商店中的 Windows Phone 应用程序(8.1 XAML)迁移到 8.1 Silverlight?

微软警告 Windows 8.1 用户:系统即将停止支持,建议购买 Win11/10 新设备

Windows 10下Maven3.8.1的安装与配置

如何在 Windows 8.1 中访问 HubSection 内的控件

我如何采取截图编程中的Windows Phone 8.1

如何在 Windows Phone 8.1 / Windows 10 上创建自定义 VirtualizingPanel?