我需要一种更好的方法来查询已安装的防病毒软件。也许在 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