AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 787994
Accepted
Matt
Matt
Asked: 2016-07-06 04:35:00 +0800 CST2016-07-06 04:35:00 +0800 CST 2016-07-06 04:35:00 +0800 CST

如何让 Windows 忘记它已安装防病毒软件?

  • 772

我们购买了用于 PCI 合规性的网络和软件解决方案:TrustWave。我们开始安装防病毒软件,但意识到正在安装它的机器上不需要它,因此想要安装不同的解决方案。

该程序的有人值守卸载工作正常。无人值守的安装不是很干净。虽然它支持静音开关,但它本身的大部分内容都被抛在了后面。我已经编写了大部分脚本,但有一部分我遇到了问题:Windows 仍然认为该软件是作为防病毒产品安装的。看看如何确认这来自WMI

Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct

我很难找出如何擦除这些信息。搜索只会让我找到有关安装或删除已完成的整个防病毒产品的解决方案。

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

安装其他防病毒软件很可能会解决此问题,但有些机器将在没有的情况下运行,因此此信息仍然有用。

windows anti-virus windows-7
  • 1 1 个回答
  • 531 Views

1 个回答

  • Voted
  1. Best Answer
    yagmoth555
    2016-07-06T05:03:43+08:002016-07-06T05:03:43+08:00

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

    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参数远程运行。

    • 4

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve