ho visto esempi di codice simili ai seguenti numerose volte nella mia ricerca di una risposta:Come rilevare l'antivirus su Windows Server 2008 in 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();
}
}
}
Purtroppo, sembra che Windows Server 2008 non ha lo spazio dei nomi SecurityCenter
o SecurityCenter2
, così ho ottenere un'eccezione Invalid namespace
quando provi questo approccio.
Qualcuno conosce un modo per determinare se è in esecuzione un software antivirus su Windows Server 2008? Qualsiasi aiuto è apprezzato!
Ho visto quel post, ma sono davvero alla ricerca di una risposta specifica per C#. – athom
Non correlati, ma abituati a usare 'return instance.Any();' invece di 'Count> 0' - se' instances' è una lista molto lunga, contando tutti i membri solo per vedere se sono più di zero è una cattiva idea :) – carlpett
Grazie per il suggerimento! Ho semplicemente copiato l'esempio di codice da [qui] (http://stackoverflow.com/questions/1331887/detect-antivirus-on-windows-using-c-sharp), ma terrò questo a mente se mai dovessi il mio lavoro! – athom