windows - 可以在没有 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”之类的其他内容,注销,登录,然后按此类键。它不显示开始菜单。
解决方案
用户登录后,按进程创建资源管理器userinit
进程。Userinit
执行用户环境的一些初始化(例如运行登录脚本和应用组策略),然后在注册表中查看 Shell 值并创建一个进程来运行系统定义的 shell——默认情况下,Explorer.exe
. 然后 Userinit 退出。这就是为什么Explorer.exe
没有父进程的各种进程浏览器显示的原因——它的父进程已经退出。
因为windows用来Explorer.exe
启动启动进程,所有正常的进程都是子进程Explorer.exe
,除非一个孩子死了而孩子的孩子没死。
开始菜单也是资源管理器的子项。如果不运行它,开始菜单将无法正常工作。
推荐阅读
- python - 从 Python 中的 json 文件中删除密钥(获取 TypeError)
- python - 我想要一个函数永远运行,但我不希望它重复
- python - 使用 Levenshtein 距离对 sqlalchemy 中的搜索查询进行排序?
- c - 重定向系统调用,如 fopen/open/等。在 macOS/达尔文
- c++ - “使用字符串”的 MSDN 文档不是最新的吗?
- sas - Sas 过滤器宏
- excel - 没有符号的 Excel 百分比
- r - 来自 R 的 Forecast 包的 dm.test (Diebold Mariano) 的 Python 实现,具有相同的界面
- postgresql - 如何避免 PostgreSQL 查询中的顺序扫描
- bash - 替代另一个命令的 bash 完成脚本