语境
我电脑上的一个启动程序在登录后会在桌面上启动一个短暂的cmd.exe
窗口。该窗口会窃取焦点,关闭时不会返回焦点。它的持续时间太短,以至于无法读取提示中的文本。这非常令人讨厌,因为它增加了有效启动时间并影响了用户体验。
问题
如何确定哪些应用程序正在启动cmd.exe
和/或在 Windows 启动/登录时窃取焦点?
注意:操作系统是 Windows 8.1 Pro。
答案1
替代启动管理器
虽然任务管理器可以给你一些有关启动项的信息,如果您想要更多控制,可以使用类似自动运行:
此实用程序对自动启动位置的了解比任何启动监视器都要全面,它向您显示配置为在系统启动或登录期间运行的程序,并按 Windows 处理它们的顺序显示条目。这些程序包括启动文件夹、Run、RunOnce 和其他注册表项中的程序。您可以配置 Autoruns 以显示其他位置,包括 Explorer shell 扩展、工具栏、浏览器帮助程序对象、Winlogon 通知、自动启动服务等等。
它可以作为收集和检查潜在候选人的起点,发现您可能不知道的初创地点。
明确问题
由于您知道短暂的进程依赖于命令行处理器,因此您可以暂时覆盖cmd.exe
以阻止其运行,并分析命令行参数。
- 使用管理员帐户登录。
- 按Win+ R,
regedit.exe
在文本框中输入,然后按Enter
。 - 导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
注册表项。 - 右键单击
Image File Execution Options
子项,选择新建 > 键从上下文菜单中,将其命名为cmd.exe
。 - 右键单击右侧窗格中的空白区域并选择新建 > 字符串值. 命名新值
Debugger
。 - 双击该
Debugger
值,并将其设置为calc.exe
。 - 重新启动 Windows 以确保所有启动项都已再次加载。所有
cmd.exe
进程都将重定向到标准计算器程序。 - 按Shift+ Ctrl+Esc调出任务管理器。
- 切换到细节选项卡,右键单击列标题栏的任意位置,然后单击选择列。
- 启用命令行选项,然后单击好的。
- 检查
calc.exe
列出的所有进程,并记下它们的命令行参数。 - 完成后,删除
cmd.exe
您在步骤4中创建的密钥。