2008-11-05 62 views
2

我们处于Windows环境中,希望为非公司机器自动执行此过程。如果供应商来到现场,我们希望能够让他/她访问能够快速扫描工作站的网站,以确定他们是否有适当的MS KB修补程序,以及他们的病毒扫描程序数据是否达到日期。有没有办法检查MS安全中心的病毒防护状态?

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

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

有什么想法?

回答

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

对于未向WMI报告的AV或AV卸载后WMI保留状态信息的AV(有两种情况),您可能需要考虑OPSWAT库。 您需要从您的网站编写和部署轻量级客户端,以便将该库用于机器进行审问。 该库利用WMI为安全应用程序提供正确支持WMI和专有方法来检测AV和它们的dat状态。