我看到類似下面的無數次的代碼樣本中我尋找一個答案:如何在C#中檢測Windows Server 2008上的防病毒?
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();
}
}
}
不幸的是,它似乎在Windows Server 2008不具備SecurityCenter
或SecurityCenter2
命名空間,所以我得到一個Invalid namespace
例外當嘗試這種方法。
有誰知道一種方法來確定是否有在Windows Server 2008上運行的防病毒軟件?任何幫助表示讚賞!
我看過那篇文章,但我確實在尋找C#特定的答案。 – athom
不相關,但習慣於使用'returns instances.Any();'而不是'Count> 0' - 如果'instances'是一個非常長的列表,只計算所有成員以查看它們是否大於零是一個壞主意:) – carlpett
感謝您的提示!我只是從[這裏]複製代碼示例(http://stackoverflow.com/questions/1331887/detect-antivirus-on-windows-using-c-sharp),但我會記住這一點,如果我得到我的工作! – athom