3 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
根據(jù)Microsoft的說(shuō)法,Windows安全中心使用兩層方法來(lái)檢測(cè)狀態(tài)。一層是手動(dòng)的,另一層是通過(guò)Windows Management Instrumentation(WMI)自動(dòng)實(shí)現(xiàn)的。在手動(dòng)檢測(cè)模式下,Windows安全中心將搜索獨(dú)立軟件制造商提供給Microsoft的注冊(cè)表項(xiàng)和文件。這些注冊(cè)表項(xiàng)和文件使Windows安全中心可以檢測(cè)獨(dú)立軟件的狀態(tài)。在WMI模式下,軟件制造商確定自己的產(chǎn)品狀態(tài),然后通過(guò)WMI提供程序?qū)⒃摖顟B(tài)報(bào)告給Windows安全中心。在兩種模式下,Windows安全中心都會(huì)嘗試確定以下各項(xiàng)是否成立:
存在防病毒程序。
防病毒簽名是最新的。
防病毒程序的實(shí)時(shí)掃描或讀寫掃描已打開(kāi)。
對(duì)于防火墻,Windows安全中心會(huì)檢測(cè)是否安裝了第三方防火墻以及是否打開(kāi)了防火墻。
因此,為了確定是否存在防病毒軟件,可以使用WMI與root\SecurityCenter名稱空間建立連接(從Windows Vista開(kāi)始,必須使用root\SecurityCenter2名稱空間),然后查詢AntiVirusProductWMI類。
看看這個(gè)示例代碼
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();
}
}
}

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
在Vista SP2及更高版本中,WMI查詢略有變化。
試試這個(gè)部分\ root \ SecurityCenter2而不是\ root \ SecurityCenter
結(jié)果也略有不同。您仍然可以獲取顯示名稱,但是您需要對(duì)ProductState字段進(jìn)行一些位屏蔽,以確定onAccessScanner是否啟用/禁用以及upToDate類型的信息。
- 3 回答
- 0 關(guān)注
- 1081 瀏覽
添加回答
舉報(bào)