Como posso fazer com que o Windows esqueça que ele tinha antivírus instalado?

3

Compramos uma solução de rede e software para conformidade com PCI: TrustWave. Começamos a instalar o antivírus, mas percebemos que ele não era necessário nas máquinas nas quais ele estava sendo instalado e queríamos instalar uma solução diferente.

A desinstalação do programa participou funciona bem. É a instalação autônoma que não é muito limpa. Embora suporte um comutador silencioso, muito de si é deixado para trás. Escrevi a maior parte, mas há uma parte com a qual estou tendo problemas: o Windows ainda vê o software como instalado como um produto antivírus. Observando como confirmar isso, do WMI

Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct

Estou com dificuldades para descobrir como limpar essa informação. Pesquisando apenas me leva a solução sobre a instalação ou remoção de todo o produto antivírus que já foi feito.

Existe uma maneira de escrever para este namespace (ou registro equivalente) especificamente para que o Windows esqueça que ele foi instalado? Eu percebo que esse pedido pode ser visto como malicioso.

Instalar o outro antivírus provavelmente resolveria esse problema, mas há algumas máquinas que serão executadas sem que essa informação ainda seja útil.

    
por Matt 05.07.2016 / 14:35

1 resposta

4

Nunca testei, mas seria um roteiro como este:

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

Código de aqui

Eu acho que funcionaria, pois o outro exemplo de código segue o mesmo formato, como mostrado aqui mas sem um item de exclusão.

Um equivalente ao PowerShell seria

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

Isso também pode ser executado remotamente usando o parâmetro -Computer .

    
por 05.07.2016 / 15:03