亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用C#在Windows上檢測防病毒

使用C#在Windows上檢測防病毒

阿晨1998 2019-11-29 09:57:55
是否可以使用C#檢測計算機中是否安裝了防病毒軟件?我知道安全中心會檢測到防病毒軟件,但是如何在C#中檢測到它?
查看完整描述

3 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

根據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();

    }


  }

}


查看完整回答
反對 回復 2019-11-29
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

在Vista SP2及更高版本中,WMI查詢略有變化。

試試這個部分\ root \ SecurityCenter2而不是\ root \ SecurityCenter

結果也略有不同。您仍然可以獲取顯示名稱,但是您需要對ProductState字段進行一些位屏蔽,以確定onAccessScanner是否啟用/禁用以及upToDate類型的信息。


查看完整回答
反對 回復 2019-11-29
  • 3 回答
  • 0 關注
  • 1058 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號