Windows
如何讓 Windows 忘記它已安裝防病毒軟體?
我們購買了用於 PCI 合規性的網路和軟體解決方案:TrustWave。我們開始安裝防病毒軟體,但意識到正在安裝它的機器上不需要它,因此想要安裝不同的解決方案。
該程序的有人值守解除安裝工作正常。無人值守的安裝不是很乾淨。雖然它支持靜音開關,但它本身的大部分內容都被拋在了後面。我已經編寫了大部分腳本,但有一部分我遇到了問題:Windows 仍然認為該軟體是作為防病毒產品安裝的。看看如何確認這來自WMI
Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct
我很難找出如何擦除這些資訊。搜尋只會讓我找到有關安裝或刪除已完成的整個防病毒產品的解決方案。
有沒有辦法專門寫入這個命名空間(或等效的系統資料庫),以便 Windows 忘記它已經安裝?我意識到這個請求可能被視為惡意請求。
安裝其他防病毒軟體很可能會解決此問題,但有些機器將在沒有的情況下執行,因此此資訊仍然有用。
從未測試過它,但它會是這樣的腳本:
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
參數遠端執行。