首页 > 解决方案 > 可以在没有 Explorer.exe 的情况下调用开始菜单吗?

问题描述

我已经读过,在最新版本的 Windows 中,开始菜单是一个单独的过程。实际上,我在任务管理器中看到了“开始”。所以,如果我创建自己的 shell 并用我的应用程序替换“explorer.exe” HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell,有没有办法调用“开始”菜单,就好像我点击了任务栏上的 Windows 按钮一样?


要求重开的理由

链接的现有答案是按 Windows 键或发送 Ctrl+Esc 快捷方式以打开“开始”菜单。仅当“explorer.exe”是默认外壳时才有效。当外壳是其他东西时,这些键不起作用。要对其进行测试,请将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell“explorer.exe”更改为“notepad.exe”之类的其他内容,注销,登录,然后按此类键。它不显示开始菜单。

标签: windowswinapi

解决方案


用户登录后,按进程创建资源管理器userinit进程。Userinit执行用户环境的一些初始化(例如运行登录脚本和应用组策略),然后在注册表中查看 Shell 值并创建一个进程来运行系统定义的 shell——默认情况下,Explorer.exe. 然后 Userinit 退出。这就是为什么Explorer.exe没有父进程的各种进程浏览器显示的原因——它的父进程已经退出。

因为windows用来Explorer.exe启动启动进程,所有正常的进程都是子进程Explorer.exe,除非一个孩子死了而孩子的孩子没死。

开始菜单也是资源管理器的子项。如果不运行它,开始菜单将无法正常工作。


推荐阅读