开机启动项排查
排查“谁在开机时自己跑起来”,要看的入口不止一处:注册表的 Run 与 RunOnce 键、启动文件夹、计划任务、服务,以及部分组件自带的机制。先列出全部来源再决定关掉哪些,只删注册表里的 Run 键往往会被其他机制重新写回。
基本信息
| 适用平台 | Windows 客户端与服务器 |
|---|---|
| 主要入口 | 注册表 Run 与 RunOnce、启动文件夹、计划任务、服务 |
| 汇总命令 | Get-CimInstance Win32_StartupCommand 列出名称、命令与来源位置 |
| 注册表直查 | Get-ItemProperty 读取对应 Run 键,用户级与机器级要分别看 |
| 补充工具 | 启动项全量枚举工具可覆盖更隐蔽的位置 |
| 操作原则 | 禁用前先导出或记录原值,便于回退 |
典型使用场景
- 排查开机变慢,找出所有自启动项及其来源
- 安全巡检:确认没有来源不明的程序在开机时执行
- 关闭不需要的常驻程序,降低内存与 CPU 占用
- 定位被反复写回的自启动项,顺着来源一起处理
- 变更前留档,便于回退与事后比对
常用示例
常用示例
# 汇总列出启动项:名称、命令与来源位置
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Format-Table -AutoSize
# 查当前用户的 Run 键
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run'
# 查机器级 Run 键
Get-ItemProperty 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
# 查当前用户的启动文件夹
Get-ChildItem "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup"
# 列出未禁用的计划任务,逐项核对
Get-ScheduledTask | Where-Object State -ne Disabled | Select-Object -First 20 TaskName, TaskPath自启动入口对照
| 入口 | 位置 | 特点 |
|---|---|---|
| Run 与 RunOnce | 注册表的 HKCU 与 HKLM 对应键 | 最常见,用户级与机器级要分开看 |
| 启动文件夹 | 用户与公共启动目录 | 放快捷方式即可生效 |
| 计划任务 | 任务计划程序 | 可设触发条件,容易被漏查 |
| 服务 | 服务管理器 | 开机即运行,权限较高 |
| 组件机制 | 部分软件自带配置 | 需要专用工具才能全量枚举 |
自启动项还藏在计划任务、服务与组件配置里。只清理注册表的 Run 键常常被其他机制重新写回,遇到删不干净的情况需要用全量枚举工具逐项对照。
禁用启动项前先导出原值或留档截图,出问题才能还原。处理他人电脑时还要先确认业务影响,部分启动项是安全软件或管理代理所必需的。