我怎样才能让 Windows 忘记它已经安装了防病毒软件?

我怎样才能让 Windows 忘记它已经安装了防病毒软件?

我们购买了符合 PCI 标准的网络和软件解决方案:TrustWave。我们开始安装防病毒软件,但发现安装该软件的机器不需要它,因此想安装其他解决方案。

该计划的出席卸载工作正常。无人值守安装不太干净。虽然它支持静默切换,但很多东西都遗留了下来。我已经编写了大部分脚本,但有一部分我遇到了问题:Windows 仍然将该软件视为已安装的防病毒产品。看看如何确认这一点来自 WMI

Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct

我很难找到如何清除这些信息。搜索只能让我找到安装或删除整个防病毒产品的解决方案,而这已经完成了。

有没有办法专门写入此命名空间(或等效注册表),以便 Windows 忘记已安装?我意识到这个请求可能被视为恶意的。

安装其他防病毒软件很可能会解决此问题,但有些机器无需安装该软件即可运行,因此这些信息仍然有用。

答案1

从未测试过,但它将是像这样的脚本:

On Error Resume Next

Set shell = CreateObject("WScript.Shell")
Set getOSVersion = shell.exec("%comspec% /c ver")
version = getOSVersion.stdout.readall

Select Case True
   Case InStr(version, "n 5.") > 1 : GetOS = 0 'pre vista
   Case InStr(version, "n 6.") > 1 : GetOS = 1 'vista/post vista
   Case Else : GetOS = -1
End Select

strComputer = "."
If GetOS = 0 Then          
    Set oWMI = GetObject( _
      "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\SecurityCenter")

    Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct")

    For Each objItem In colItems
        objItem.Delete_
    Next
End If

If GetOS = 1 Then  
    Set oWMI = GetObject( _
      "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\SecurityCenter2")

    Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct")

    For Each objItem In colItems
        objItem.Delete_
    Next

End If

代码来自这里

我认为它会起作用,因为其他代码示例遵循相同的格式,如下所示这里但其中没有删除项。

PowerShell 等效项

Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct | ForEach-Object{$_.Delete()} 

这也可以通过使用参数来远程运行-Computer

相关内容