有没有办法检查MS安全中心的病毒防护状态?

时间:2008-11-05 20:00:30

标签: windows vbscript

我们处于Windows环境中,希望为非公司计算机自动执行此过程。如果供应商到现场,我们希望能够让他/她找到一个可以快速扫描工作站的网站,以确定他们是否拥有正确的MS KB补丁,以及他们的病毒扫描程序是否达到日期。

我可以相对容易地扫描KB更新,我很难找到一种检查病毒数据状态的方法,因为那里有很多不同的引擎,使用它似乎是有意义的。 (至少内置于XP)专有的MS安全中心。

最终,我们希望让我们的路由器将非公司机器重定向到一个强制验证的网站,但在此之前它将是一个手动过程。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在Windows Vista中,有一些新的API可与安全中心组件状态进行交互:http://msdn2.microsoft.com/en-us/library/bb963845(VS.85).aspx

通过WMI,这是我在http://social.msdn.microsoft.com/forums/en-US/windowssecurity/thread/bd97d9e6-75c1-4f58-9573-9009df5de19b/检出的VBS代码段,用于转储防病毒产品信息:

    Set oWMI = GetObject
("winmgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter")    
    Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct")    

    For Each objAntiVirusProduct In colItems    
    msg = msg & "companyName: " & objAntiVirusProduct.companyName & vbCrLf    
    msg = msg & "displayName: " & objAntiVirusProduct.displayName & vbCrLf    
    msg = msg & "instanceGuid: " & objAntiVirusProduct.instanceGuid & vbCrLf    
    msg = msg & "onAccessScanningEnabled: "
 & objAntiVirusProduct.onAccessScanningEnabled & vbCrLf    
    msg = msg & "productUptoDate: " & objAntiVirusProduct.productUptoDate & vbCrLf    
    msg = msg & "versionNumber: " & objAntiVirusProduct.versionNumber & vbCrLf    
    msg = msg & vbCrLf  

    Next

    WScript.Echo msg

答案 1 :(得分:1)

对于未向WMI报告的AV或AVs在卸载AV后WMI保留状态信息的AV(有两种情况的实例),您可能希望考虑OPSWAT库。 您需要从您的网站编写和部署轻型客户端,以便将库用于要查询的计算机。 该库利用WMI为正确支持WMI的安全应用程序和专有方法检测AV及其不具备的数据状态。