猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
使用C#在Windows上检测防病毒
是否可以使用C#检测计算机中是否安装了防病毒软件?我知道安全中心会检测到防病毒软件,但是如何在C#中检测到它?
阿晨1998
浏览 991
回答 3
3回答
侃侃无极
根据Microsoft的说法,Windows安全中心使用两层方法来检测状态。一层是手动的,另一层是通过Windows Management Instrumentation(WMI)自动实现的。在手动检测模式下,Windows安全中心将搜索独立软件制造商提供给Microsoft的注册表项和文件。这些注册表项和文件使Windows安全中心可以检测独立软件的状态。在WMI模式下,软件制造商确定自己的产品状态,然后通过WMI提供程序将该状态报告给Windows安全中心。在两种模式下,Windows安全中心都会尝试确定以下各项是否成立:存在防病毒程序。防病毒签名是最新的。防病毒程序的实时扫描或读写扫描已打开。对于防火墙,Windows安全中心会检测是否安装了第三方防火墙以及是否打开了防火墙。因此,为了确定是否存在防病毒软件,可以使用WMI与root\SecurityCenter名称空间建立连接(从Windows Vista开始,必须使用root\SecurityCenter2名称空间),然后查询AntiVirusProductWMI类。看看这个示例代码using System;using System.Text;using System.Management;namespace ConsoleApplication1{ class Program { public static bool AntivirusInstalled() { string wmipathstr = @"\\" + Environment.MachineName + @"\root\SecurityCenter"; try { ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmipathstr, "SELECT * FROM AntivirusProduct"); ManagementObjectCollection instances = searcher.Get(); return instances.Count > 0; } catch (Exception e) { Console.WriteLine(e.Message); } return false; } public static void Main(string[] args) { bool returnCode = AntivirusInstalled(); Console.WriteLine("Antivirus Installed " + returnCode.ToString()); Console.WriteLine(); Console.Read(); } }}
0
0
0
杨魅力
在Vista SP2及更高版本中,WMI查询略有变化。试试这个部分\ root \ SecurityCenter2而不是\ root \ SecurityCenter结果也略有不同。您仍然可以获取显示名称,但是您需要对ProductState字段进行一些位屏蔽,以确定onAccessScanner是否启用/禁用以及upToDate类型的信息。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C#
typedef入门问题
1 回答
操作系统
windows桌面的系统图标是程序吗?和普通程序有什么不同?
1 回答
关于操作系统安装不上 的问题?
3 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续