有没有办法检查MS安全中心的病毒防护状态?
问题描述:
我们处于Windows环境中,希望为非公司机器自动执行此过程。如果供应商来到现场,我们希望能够让他/她访问能够快速扫描工作站的网站,以确定他们是否有适当的MS KB修补程序,以及他们的病毒扫描程序数据是否达到日期。有没有办法检查MS安全中心的病毒防护状态?
我可以扫描KB更新相对容易,我很难找到的是一种检查病毒数据状态的方法,并且因为有那么多不同的引擎,所以使用它似乎是有意义的(内置于XP至少)专有的MS安全中心的东西。
最后,我们希望我们的路由器将非公司机器重定向到强制验证的网站,但在此之前它将成为手动过程。
有什么想法?
答
在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
答
对于未向WMI报告的AV或AV卸载后WMI保留状态信息的AV(有两种情况),您可能需要考虑OPSWAT库。 您需要从您的网站编写和部署轻量级客户端,以便将该库用于机器进行审问。 该库利用WMI为安全应用程序提供正确支持WMI和专有方法来检测AV和它们的dat状态。