自动关闭Windows资源管理器

har*_*ers 4 c# windows explorer

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

foreach (Process p in Process.GetProcesses())
                if (p.MainModule.ModuleName.Contains("explorer"))
                    p.Kill();  
Run Code Online (Sandbox Code Playgroud)

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

ps这不是一个恶意程序,它将运行一个游戏,当探险家在后台时,该游戏无法正常工作

Nic*_*ick 5

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

但是,获取Explorer的所有实例并将其杀死的最快方法是:

foreach (Process p in Process.GetProcessesByName("explorer"))
{
   p.Kill();
}
Run Code Online (Sandbox Code Playgroud)


msp*_*msp 5

有一种简单的无记录方式可以干净地退出资源管理器,另请参阅问题优雅退出资源管理器(以编程方式).它适用于从事shell扩展的开发人员.

对于Windows XP和Windows 7,该过程有所不同:

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

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