如何使用WinForms上的C#识别(检测和命名)安装在PC上的防病毒软件

本文概述

  • 1.添加对System.Management类的引用
  • 2.检索信息
在最后几天, 我从事PC维护项目, 此应用程序的要求之一基本上是显示安装在PC上的防病毒软件的名称。虽然乍一看, 这将是困难的。幸运的是, 它看起来并不困难, 因为Windows已经可以使用此功能, 因此你将需要访问其API来检索信息(我们正在谈论SecurityCenter)。自Windows XP Service Pack 2发行以来, Windows安全中心是内置于操作系统中的报告工具, 它可以监视端点在不同区域(例如Windows更新, 防火墙设置和防病毒/防病毒)的健康状态。间谍软件设置。
在本文中, 我们将向你展示如何通过安全中心的AntiVirusProduct类检索当前安装的防病毒名称。
1.添加对System.Management类的引用 为了获得有关WinForms中带有C#的主板的信息, 你将需要访问System Management类:
using System.Management;

但是, 在某些Visual Studio版本中(特别是在2010年和更高版本中), 你需要在项目中手动添加引用(.DLL)。为此, 请按照下列步骤操作:
  1. 右键单击项目, 添加引用
  2. 选择” 程序集(框架)” 选项卡, 然后搜索System.Management, 最后添加引用, 然后单击” 确定” 。
如何使用WinForms上的C#识别(检测和命名)安装在PC上的防病毒软件

文章图片
我们需要添加System.Management来在WMI类中创建查询。在此处阅读有关在msdn中检索.NET中的WMI类的更多信息。
2.检索信息 要从Management Object Searcher中检索信息, 我们将查询root \ SecurityCenter2(在Windows XP下为root \ SecurityCenter)类。 Microsoft未记录返回有关已安装的防病毒信息的AntivirusProduct类, 只有Windows Desktops版本(Windows XP, Windows Vista和Windows 7)才支持。同样, 根据Windows版本的不同, 此类可以检索此类的属性, 例如, 在Windows XP中, 这些属性可用:
Namespace : SecurityCenterAntiVirusProduct-PropertiescompanyNamedisplayNameenableOnAccessUIMd5HashenableOnAccessUIParametersinstanceGuidonAccessScanningEnabledpathToEnableOnAccessUIpathToUpdateUIproductUptoDateupdateUIMd5HashupdateUIParametersversionNumber

在Windows 7及更高版本中:
Namespace : SecurityCenter2displayNameinstanceGuidpathToSignedProductExepathToSignedReportingExeproductState

因此, 在此示例中, 我们正在Windows 10中工作, 因此我们可以检索的属性是以下代码片段中包含的属性:
public void getAntivirusName(){ManagementObjectSearcher wmiData = http://www.srcmini.com/new ManagementObjectSearcher(@"root\SecurityCenter2", "SELECT * FROM AntiVirusProduct"); ManagementObjectCollection data = http://www.srcmini.com/wmiData.Get(); foreach (ManagementObject virusChecker in data){Console.WriteLine(virusChecker["displayName"]); Console.WriteLine(virusChecker["instanceGuid"]); Console.WriteLine(virusChecker["pathToSignedProductExe"]); Console.WriteLine(virusChecker["productState"]); }}

在我们的PC中, 代码将生成以下输出:
Windows Defender{xxxxxxxx-831F-xxxx-9EE-DA111111146}windowsdefender://397568

请注意, productState属性返回一个数字, 该数字的解释会根据你拥有的防病毒软件而有所不同, 例如:
A.AVG Internet Security 2012(来自防病毒产品WMI)
262144(040000)=禁用且最新
【如何使用WinForms上的C#识别(检测和命名)安装在PC上的防病毒软件】266240(041000)=已启用且最新
B.AVG Internet Security 2012(来自防火墙产品WMI)
266256(041010)=启用了防火墙-(后两个块与防火墙似乎无关)
262160(040010)=禁用了防火墙-(后两个块与防火墙似乎无关)
C.Windows Defender
393472(060100)=禁用且最新
397584(061110)=已启用且已过期
397568(061100)=已启用并且是最新的
D. Microsoft安全必备
397312(061000)=已启用且是最新的
393216(060000)=禁用且最新
编码愉快!

    推荐阅读