我需要一种更好的方法来查询已安装的防病毒软件。也许在 c# 中有这样的东西?
I need a better way to query installed antivirus. Something like this in c# Perhaps?
是否有与此等效的 C#?我已经尝试使用 WMI 并且只是得到 "Windows Defender" 而不管安装的 WMI 兼容 AntiVirus。
我只想在文本框中显示这些结果。
WMIC /Node:localhost /Namespace:\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
当我使用上面的代码时,我得到了我的 AntiVirus 的实际名称。
您可以添加对 System.Management
的引用。然后使用 ManagementObjectSearcher
您可以 运行 WMI 查询。
要查找已安装的防病毒软件,您应该在 SecurityCenter2
中搜索。例如:
var path = string.Format(@"\{0}\root\SecurityCenter2", Environment.MachineName);
var searcher = new ManagementObjectSearcher(path, "SELECT * FROM AntivirusProduct");
var instances = searcher.Get().Cast<ManagementObject>()
.Select(x => (string)x.GetPropertyValue("displayName"))
.ToList();
注1:对于Windows XP,在SecurityCenter
中搜索。
注2:您还可以阅读AntiVirusProduct
的其他属性:
displayName
: string
instanceGuid
: string
pathToSignedProductExe
: string
pathToSignedReportingExe
: string
productState
: UInt32
。 (有关如何解析状态的信息,请查看 this post。)
timestamp
: string
是否有与此等效的 C#?我已经尝试使用 WMI 并且只是得到 "Windows Defender" 而不管安装的 WMI 兼容 AntiVirus。
我只想在文本框中显示这些结果。
WMIC /Node:localhost /Namespace:\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
当我使用上面的代码时,我得到了我的 AntiVirus 的实际名称。
您可以添加对 System.Management
的引用。然后使用 ManagementObjectSearcher
您可以 运行 WMI 查询。
要查找已安装的防病毒软件,您应该在 SecurityCenter2
中搜索。例如:
var path = string.Format(@"\{0}\root\SecurityCenter2", Environment.MachineName);
var searcher = new ManagementObjectSearcher(path, "SELECT * FROM AntivirusProduct");
var instances = searcher.Get().Cast<ManagementObject>()
.Select(x => (string)x.GetPropertyValue("displayName"))
.ToList();
注1:对于Windows XP,在SecurityCenter
中搜索。
注2:您还可以阅读AntiVirusProduct
的其他属性:
displayName
:string
instanceGuid
:string
pathToSignedProductExe
:string
pathToSignedReportingExe
:string
productState
:UInt32
。 (有关如何解析状态的信息,请查看 this post。)timestamp
:string