4

我正在尝试编写一个关闭资源管理器然后运行另一个程序的程序。
尝试使用以下代码关闭资源管理器时遇到问题:

foreach (Process p in Process.GetProcesses())
                if (p.MainModule.ModuleName.Contains("explorer"))
                    p.Kill();  

有人可以让我知道它为什么这样做并提供解决方案
CHEERS

ps 这不是恶意程序,当资源管理器在后台时它会运行无法正常运行的游戏

4

3 回答 3

5

问题是您可以在任何一个时间点运行多个版本的资源管理器......并且您通常至少需要其中一个。承载开始菜单的外壳实际上是资源管理器的一个实例。因此,如果您关闭 Explorer 的所有实例,您还将关闭主 shell,这不是您想要做的。

但是,获取资源管理器的所有实例并杀死它们的最快方法是:

foreach (Process p in Process.GetProcessesByName("explorer"))
{
   p.Kill();
}
于 2010-03-05T14:28:14.747 回答
5

有一种简单的未记录方式可以干净地退出资源管理器,另请参阅问题Gracefully Exit Explorer (Programmatically)。它适用于从事 shell 扩展的开发人员。

Windows XP 和 Windows 7 的过程不同:

Windows XP:打开关机对话框(开始 > 关机),然后按 CTRL-SHIFT-ALT-ESC 取消对话框(或按住 CTRL-SHIFT-ALT 并用鼠标按下按钮)。

Windows 7:打开“开始”菜单,然后在按住 CTRL-SHIFT 的同时右键单击开始菜单的空白区域,请参见屏幕截图。出现一个上下文菜单,其中第二个条目是“退出资源管理器”(没有 CTRL-SHIFT,上下文菜单只有一个条目)

于 2011-07-02T16:45:10.267 回答
0

ps 这不是恶意程序,当资源管理器在后台时它会运行无法正常运行的游戏

资源管理器是一个关键的 Windows 组件。您应该调试资源管理器运行时出现问题的原因,并修复这些问题。

杀死 Explorer 会给您的用户带来严重的问题。

于 2019-08-22T20:16:07.947 回答