最直接导出全部引导项的方式是用管理员权限运行 bcdedit /enum all > "%USERPROFILE%\Desktop\bcd_backup.txt",可导出包括Windows主系统、PE、Ubuntu等所有BCD条目;若需全面开机启动项,则需配合PowerShell脚本导出注册表Run键、启动文件夹及计划任务共5类数据。

用 bcdedit /enum all 导出全部引导项(BCD)
这是最直接、无需第三方工具的方式,适用于所有 Windows 10/11 系统。它导出的是底层引导配置数据(BCD),包括 Windows 主系统、Windows PE、Ubuntu、旧版本残留项等所有条目。
操作前注意:bcdedit 必须以管理员身份运行,否则会报错 The boot configuration data store could not be opened.;导出内容含敏感标识符(如 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}),别随意分享。
- 打开“Windows 终端(管理员)”或“命令提示符(管理员)”
- 执行:
bcdedit /enum all > "%USERPROFILE%\Desktop\bcd_backup.txt" - 检查桌面生成的
bcd_backup.txt:确认包含多个identifier、description和device字段 - 若只需当前活动启动项(更简洁),改用:
bcdedit /enum active > bcd_active.txt
用 PowerShell 批量抓取注册表 + 启动文件夹 + 计划任务
单纯导 BCD 不够——它不包含软件自启、开机弹窗、后台服务这些真正拖慢开机的“活跃启动项”。PowerShell 脚本能一次性覆盖五大入口,且输出为结构化文本,方便比对和归档。
关键点:注册表 Run 键分用户级(HKCU)和系统级(HKLM),必须分别查询;计划任务中 onlogon 和 onstart 触发器都要扫,否则漏掉后台服务类自启。
- 以管理员身份运行 PowerShell
- 粘贴并执行以下命令(可保存为
export-startup.ps1):Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -ErrorAction SilentlyContinue | Out-File "$env:USERPROFILE\Desktop\startup_reg_hkcu.txt" Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -ErrorAction SilentlyContinue | Out-File "$env:USERPROFILE\Desktop\startup_reg_hklm.txt" Get-ChildItem "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup" -ErrorAction SilentlyContinue | Select-Object Name, FullName | Out-File "$env:USERPROFILE\Desktop\startup_folder_user.txt" Get-ChildItem "$env:PROGRAMDATA\Microsoft\Windows\Start Menu\Programs\StartUp" -ErrorAction SilentlyContinue | Select-Object Name, FullName | Out-File "$env:USERPROFILE\Desktop\startup_folder_allusers.txt" schtasks /query /fo LIST /v | findstr /i "TaskName Next Run Time Status" > "$env:USERPROFILE\Desktop\startup_tasks.txt"
- 生成的 5 个文件中,
startup_tasks.txt是纯文本,其他是 PowerShell 对象序列化结果,需用记事本打开查看
用 msconfig 或任务管理器无法导出?那是设计限制
msconfig 的“启动”选项卡在 Win10/11 中已退化为跳转入口,点击后直接打开任务管理器,本身不提供导出功能;任务管理器的“启动”页同样不支持右键导出或复制全部——微软没给这个出口,强行截图或手动复制效率低、易漏项。
这不是 bug,是策略性阉割:微软希望用户通过图形界面“禁用/启用”,而非批量导出分析。如果你真需要可视化报告,必须绕过它,用上面两种方式组合生成原始数据,再用 Excel 或 VS Code 手动整理。
- 别尝试用
reg export导整个Run键:会导出二进制值和无用子键,污染结果 - 别依赖第三方“一键导出”工具:很多免费工具会悄悄上传启动项路径到服务器,隐私风险高
- 导出后建议立即重命名文件,加入日期和主机名,例如:
startup_report_WIN7-DELL_20260929.txt
导出后怎么验证是否完整?重点核对这三处
一份可靠的启动项报告,必须能交叉验证——比如某个程序在注册表里写了启动,但在启动文件夹里没快捷方式,又没对应计划任务,那它大概率是通过 DLL 注入或服务方式加载的,属于更隐蔽的启动行为,普通导出抓不到。
所以导出不是终点,而是排查起点。最容易被忽略的是“计划任务”的触发条件:有些任务设置为“登录时运行”,但只对特定用户生效;有些设为“系统空闲时运行”,开机后几秒才拉起,这类不会出现在 schtasks /query 默认输出里,得加 /fo LIST /v 参数才显示完整上下文。
- 打开
bcd_backup.txt,搜索description字段,确认是否包含你记得的所有系统(如 “Windows 11”、“Ubuntu on VHD”、“Windows PE”) - 对比
startup_reg_hkcu.txt和startup_folder_user.txt,看是否有同名程序在两处重复出现(说明软件用了双保险) - 打开
startup_tasks.txt,查找Trigger:行,确认有没有带Log on、At system startup或On idle的任务

















