我如何修改注册表以便 svchost 将 explorer.exe 作为 shell 进程打开?

我如何修改注册表以便 svchost 将 explorer.exe 作为 shell 进程打开?

当 Windows 笔记本电脑的电池电量不足时,就会出现一条消息提示。

在此处输入图片描述

Explorer.exe 处理此任务,但关闭该通知后它将保留在任务栏中。

在此处输入图片描述

svchost 使用以下命令行参数调用 Explorer.exe:explorer.exe /factory {ceff 45ee-c862-41 de-aee2-a022c81eda92} -Embedding我发现{ceff 45ee-c862-41 de-aee2-a022c81eda92}CLSID 用于创建另一个 explorer 实例(用于显示通知),该实例作为与创建桌面和任务栏的 shell 进程不同的进程运行。我实际上怀疑这个 explorer.exe 实例没有与 explorer.exe shell 进程通信,这导致了错误。

当 explorer.exe 被调用来显示该通知时,如何强制将其作为 shell 进程运行?如果我{ceff 45ee-c862-41 de-aee2-a022c81eda92}从注册表中删除 CLSID 项,svchost 是否会在没有命令行参数的情况下调用 explorer.exe,或者 svchost 是否无法调用 explorer.exe?

PD:

我还发现了RunAs中的键HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}(这是 explorer.exe 的 AppId 注册表位置),其值为Interactive User。该值也可以替换为nt authority\localservicent authority\networkservicent authority\system。如果我将当前值替换为上述值之一,是否可以解决问题?

答案1

关于此行为的帖子已经很多了。微软很可能一直打算将警告保留下来作为提醒。

我查看了其中一些帖子,唯一似乎有效的建议是在设备管理器中禁用电池:

在此处输入图片描述

电池将继续工作,但 Windows 可能不会监控它,这可能会导致新的问题。

您也可以在电源选项中完全禁用警告,或者通过更改“电池”下的警告阈值来推迟警告。

相关内容