Widziałem próbki kodu podobnego do następujących wiele razy w moim poszukiwaniu odpowiedzi:Jak wykryć program antywirusowy w systemie Windows Server 2008 w języku C#?
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();
}
}
}
Niestety, wydaje się, że Windows Server 2008 nie ma nazw SecurityCenter
lub SecurityCenter2
, więc mogę wyjątek Invalid namespace
podczas próby tego podejścia.
Czy ktoś wie, w jaki sposób można sprawdzić, czy oprogramowanie antywirusowe działa w systemie Windows Server 2008? Każda pomoc jest doceniana!
Widziałem ten post, ale naprawdę szukam odpowiedzi na C#. – athom
Niezwiązane, ale nawyku używania 'return instances.Any();' zamiast 'Count> 0' - jeśli' instances' jest bardzo długą listą, licząc wszystkich członków tylko po to, aby zobaczyć, czy są one większe od zera to zły pomysł :) – carlpett
Dzięki za napiwek! Po prostu skopiowałem przykład kodu z [tutaj] (http://stackoverflow.com/questions/1331887/detect-antivirus-on-windows-using-c-sharp), ale będę o tym pamiętał, gdybym kiedykolwiek moje działa! – athom