autoruns可全面扫描服务、wmi、计划任务、appinit_dlls等上百个隐蔽启动项,远超任务管理器“启动”选项卡范围;需官网下载、管理员运行,重点检查logon/scheduled tasks/services标签页及image path含脚本扩展名的路径。

用 Autoruns 一次性扫全所有启动入口
任务管理器的「启动」选项卡只能看到启动文件夹和注册表 Run 键里最表层的条目,木马脚本早就不走这条路了。Autoruns 是微软官方 Sysinternals 套件里的工具,能直接读取服务、WMI 订阅、计划任务缓存、AppInit_DLLs、映像劫持(IFEO)等上百个隐蔽位置,这才是真正能揪出恶意自启脚本的“透视镜”。
操作要点:
- 下载地址必须是微软官网:https://learn.microsoft.com/sysinternals/downloads/autoruns,别信第三方打包站
- 解压后右键
autoruns64.exe(64位系统)→「以管理员身份运行」,否则看不到系统级路径 - 默认打开的是 Logon 选项卡,这是用户登录时触发的脚本主战场;别漏掉顶部菜单栏的 Scheduled Tasks 和 Services 标签页
- 点击
Image Path列标题排序,优先检查含.vbs、.js、.wsf、.bat的路径,尤其是那些指向%APPDATA%、%TEMP%或已卸载软件残留目录的条目
注册表 Run/RunOnce 键里藏的是命令行,不是文件名
很多脚本错误弹窗(比如“Windows Script Host 错误:找不到脚本文件”)根本不是因为脚本还在,而是注册表里还存着一条完整的执行命令,例如:wscript.exe "C:\Users\Alice\AppData\Roaming\update.vbs"——脚本早就被删了,但这条命令还在反复调用,每次登录都报错。
要手动清理,必须进注册表编辑器逐个检查以下五个关键路径:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce-
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run(64位系统上32位程序用)
重点看右侧「数值数据」列内容,不是看「名称」列。只要数据里包含 wscript.exe、cscript.exe、cmd /c 或完整路径字符串,且路径已不存在或签名无效,就该删。
计划任务里“登录时触发”的脚本最难察觉
计划任务比注册表更隐蔽:它不依赖用户环境变量,能绕过 Autoruns 的部分过滤逻辑,还能设置延迟启动、高权限运行、隐藏窗口——这正是木马偏爱的方式。图形界面里打开 taskschd.msc 看起来很直观,但大量恶意任务会起个看似正常的名称(比如 WindowsUpdateCheck),触发条件却是「用户登录时」,操作却是调用 %windir%\System32\wscript.exe 执行远程下载的 JS。
更可靠的方式是命令行排查:
- 查所有启用的任务:
schtasks /query /fo LIST /v | findstr /i "Logon Start" - 查具体可疑任务的 XML 内容:
schtasks /query /tn "TaskName" /xml,重点关注Action/Exec/Command和Action/Exec/Arguments字段 - 直接删掉确认异常的任务:
schtasks /delete /tn "TaskName" /f
注意:/v 参数必须加,否则看不到触发条件;/f 是强制删除,避免弹窗确认打断批量操作。
启动文件夹里的 .lnk 快捷方式也会调用脚本
很多人只盯着注册表和计划任务,却忽略了两个物理路径:用户级启动文件夹 %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup 和系统级 %ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp。里面放的 .lnk 文件,目标可能指向一个 BAT,而那个 BAT 又调用 VBS,形成多层跳转。Autoruns 能扫到,但手动删更直接。
PowerShell 一行就能清空当前用户的启动快捷方式:
Remove-Item "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\*.lnk" -Force
但别盲目全删——有些输入法、云盘、硬件控制面板确实靠这个启动。建议先用 Get-ChildItem 列出来,人工过一遍再删。特别留意名称带 repair、check、auto、update 的快捷方式,它们十有八九是伪装的。
真正的难点从来不在“怎么删”,而在于“删完会不会让某个合法功能失效”。比如删掉一条 IntelGraphicsSettings 的启动项,显卡控制面板就打不开;误删了某款网盘的计划任务,同步就停了。所以每删一条,最好记下原始路径和描述,留作回滚依据。











