个性化阅读
专注于IT技术分析

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

本文概述

在最后几天, 我从事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, 最后添加引用, 然后单击”确定”。

手动添加System.Management参考Visual Studio

我们需要添加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 : SecurityCenter

AntiVirusProduct-Properties

companyName
displayName
enableOnAccessUIMd5Hash
enableOnAccessUIParameters
instanceGuid
onAccessScanningEnabled
pathToEnableOnAccessUI
pathToUpdateUI
productUptoDate
updateUIMd5Hash
updateUIParameters
versionNumber

在Windows 7及更高版本中:

Namespace : SecurityCenter2

displayName
instanceGuid
pathToSignedProductExe
pathToSignedReportingExe
productState

因此, 在此示例中, 我们正在Windows 10中工作, 因此我们可以检索的属性是以下代码片段中包含的属性:

public void getAntivirusName()
{
    ManagementObjectSearcher wmiData = new ManagementObjectSearcher(@"root\SecurityCenter2", "SELECT * FROM AntiVirusProduct");
    ManagementObjectCollection data = 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)=禁用且最新

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)=禁用且最新

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何使用WinForms上的C#识别(检测和命名)安装在PC上的防病毒软件

评论 抢沙发

评论前必须登录!