最新消息: 预先成其事必先利其器

写个小脚本,查电脑上被静默装了几个安全软件

2 浏览 静默安装 多杀软 PowerShell 自查

一台电脑上同时跑两三家防护软件,实际效果不是三倍安全,而是蓝屏、互锁、或者两边都关了的防护真空。问题是光看桌面图标看不出来,需要从四个层次分别查。

第一层:安全中心里注册了什么

这一层只看得到自报了家门的:

Get-CimInstance -Namespace root\SecurityCenter2 -ClassName AntiVirusProduct |
  Select-Object displayName, productState, pathToSignedFilePath

列表里出现两行以上,就已经确认多家共存。但这一层不可靠:很多静默安装的组件不往这里注册,它们只跑驱动。所以看到一行不代表安全,看到多行一定有问题。

第二层:卸载列表里到底装了什么

安全软件往往不是一个条目,而是四五个同厂商名字的项目。把卸载表拉出来比看开始菜单准确:

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
               'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' |
  Where-Object {$_.DisplayName} |
  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
  Sort-Object DisplayName

重点看三件事:同厂商前缀的条目是不是多于两个、InstallDate 里有没有你根本不记得是哪一天装的东西、Publisher 写的是不是一些陌生的小公司名字。第三件是静默安装最常见的痕迹。

第三层:内核驱动与驱动型服务

静默安装的组件大多数藏在这一层,因为拦截行为必须在驱动里做。先看运行中的驱动型服务,排除系统自带的那些:

Get-CimInstance Win32_SystemDriver |
  Where-Object {$_.State -eq 'Running'} |
  Select-Object Name, DisplayName, PathName

列表很长,全部人工看没有意义。用关键字筛,同时把中英文厂商词都放进去:

$kw = '360|huorong|tencent|qqpc|kingsoft|2345|卫士|管家|安全|杀毒|防火墙|shield|antivirus'
Get-CimInstance Win32_SystemDriver |
  Where-Object {$_.State -eq 'Running' -and $_.PathName -match $kw} |
  Select-Object Name, DisplayName, PathName

把这一段输出记下来。它比桌面上有没有图标可靠得多,因为图标可以隐藏,驱动加载了就一定在运行。

第四层:启动项与计划任务

很多组件不在驱动层,而是靠开机拉起与定时任务活着:

# 启动项(当前用户与全局 Run 键)
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
               'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' |
  Select-Object * -ExcludeProperty PS*

# 非微软自带的计划任务
Get-ScheduledTask | Where-Object {$_.Author -notlike "Microsoft*"} |
  Select-Object TaskName, TaskPath, State, Author

这一层能发现一类特殊情况:主程序已经卸载,但它的上报任务、定时弹窗任务还在跑。它们在任务列表里表现为来路不明的小可执行文件。

结果怎么判读

四层结果组合 含义 建议动作
一层只有一行,三、四层无额外命中 正常,只有一家 什么都不用做
一层多行,三层也多个驱动 真的多家实时防护共存 卸一家,不要只关模块
一层没有,三层命中多个驱动 静默安装,或者卸载残留 先确认在用哪个,再清其余
只有四层有残留 主程序已卸,垃圾还在 禁用任务即可,不必折腾驱动
二层同厂商条目超过四个 全家桶 一次性卸完,避免回装

发现多家之后怎么处理

先定下来留谁,再动手。保留标准不是谁名气大,而是谁在你机器上造成的干扰小,具体参考站内讲双杀软冲突定位那篇。

处理顺序固定:先用厂商官方卸载工具卸多余的那家,重启两次;重跑本脚本第二、三、四层确认结果;最后打开 Windows 安全中心确认实时保护已经接管。如果确认发现防护真空,先把 Defender 实时保护手动打开。

最后一句

查多家共存这件事,真正的难点不是命令,而是不要相信图标。静默安装的组件没有图标,卸载残留的驱动也没有图标,它们只能从安全中心注册、驱动列表和计划任务里读出来。把四层输出存成一个文件,以后重装或者换电脑时还能对照。