如何像taskmgr一样重启资源管理器?

问题描述 投票:0回答:1

当您在taskmgr中选择explorer进程时,按钮将是“重新启动”而不是“结束任务/结束进程”。点击重启后,explorer又像以前一样显示在taskmgr的“windows进程”中,但“kill&start”不会。那我有几个问题:

  1. 如何像taskmgr一样重新启动资源管理器?
  2. taskmgr怎么知道explorer可以重启并重启它?
  3. 我可以制作一个应用程序来告诉taskmgr它可以重新启动吗?

screenshoot: explorer's position in taskmgr, before and after restart, not there after kill&start

我当前的终止和启动资源管理器代码(C#)

foreach (Process p in Process.GetProcesses())
{
    if (p.ProcessName.ToUpper().Contains("EXPLORER"))
    {
        p.Kill();
        p.WaitForExit();
    }
}
Process.Start("explorer.exe");

我尝试使用cmd

taskkill /f /im explorer.exe
explorer
windows explorer taskmanager
1个回答
0
投票

我调试了

taskmgr
,发现虽然
explorer
确实得到了特殊处理(
taskmgr!WdcApplicationsMonitor::_HandleRestartExplorer
),但它只是简单地调用
TerminateProcess

然后,它会检查注册表中的 AutoRestartShell(我使用的是 Windows 11,默认设置);

如果设置则

taskmgr
完成;操作系统将重新启动
explorer

如果没有设置,那么它会调用

WdcRunTaskAsInteractiveUser("L%windir%\\explorer.exe", nullptr, 9)
wdc.dll
中未记录的api,并且
9
的含义未知;看起来像是一个位标志,需要进一步挖掘)来重新启动
explorer

注意:不知何故,使用

taskkill /f /im explorer.exe
,即使设置了
explorer
AutoRestartShell
也不会重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.