Dieses C# Snippet findet zahlreiche Informationen zum installierten Antivirenprogramm. Alternativ kann es auch die aktive Firewall oder den Spywareschutz erkennen.
* Die Funktion
GetAntiVirusInfoString() (empfohlen) liefert einen String mit Informationen zum aktuell installierten Virenschutz, in der
Form $name: $value, getrennt mit Zeilenumbrüchen.
* Die Funktion
GetAntiVirusInfo() liefert eine NameValueCollection mit Informationen zum aktuell installierten Virenschutz.
Der Übergabeparameter
product beider Funktionen kann verwendet werden um entweder das
AntiVirusProduct, AntiSpywareProduct oder FirewallProduct zu ermitteln.
Unter Windows XP ist die Abfrage nach
"root\\SecurityCenter2" eventuell auszutauschen durch "root\\SecurityCenter".
Beispielanwendung:
MessageBox.Show(GetAntiVirusInfoString());
// Benötigte using-Direktiven
// falls noch nicht vorhanden, ist system.management.dll auch einzubinden
using System;
using System.Collections.Specialized;
using System.Management;
/// <summary>
/// Gibt einen String zurück, der Informationen über den aktuell
/// installierten Virenschutz enthält. Der String ist in der Form $name: $value formatiert.
/// </summary>
/// <param name="product">Spezifizierung der zu durchsuchenden Klasse
/// [AntiVirusProduct, AntiSpywareProduct, FirewallProduct]</param>
/// <returns>String mit den gefundenen Informationen zur gewählten Klasse, in der Form $name: $value</returns>
public static string GetAntiVirusInfoString(string product = "AntiVirusProduct")
{
// NameValueCollection holen
NameValueCollection avCollection = GetAntiVirusInfo(product);
// String, in welchen die Ausgabe geschrieben wird
String output = String.Empty;
foreach (string key in avCollection.AllKeys)
{
// Schlüssel - Wert Paare an den Ausgabestring anfügen (im Schema $name: $value)
output += key + ": " + avCollection[key] + Environment.NewLine;
}
return output;
}
/// <summary>
/// Gibt eine NameValueCollection zurück, die Informationen über den aktuell
/// installierten Virenschutz enthält
/// </summary>
/// <param name="product">Spezifizierung der zu durchsuchenden Klasse
/// [AntiVirusProduct, AntiSpywareProduct, FirewallProduct]</param>
/// <returns>NameValueCollection mit den gefundenen Informationen zur gewählten Klasse</returns>
public static NameValueCollection GetAntiVirusInfo(string product = "AntiVirusProduct")
{
// Sucht im WMI Namespace nach der gewünschten Klasse
// (anwendbar für AntiVirusProduct, AntiSpywareProduct, FirewallProduct)
// Für Windows XP Systeme ist SecurityCenter2 durch SecurityCenter auszutauschen
ManagementObjectSearcher objSearcher =
new ManagementObjectSearcher("root\\SecurityCenter2", "SELECT * FROM " + product);
// NameValueCollection, in der das Ergebnis gespeichert wird
NameValueCollection outputCollection = new NameValueCollection();
foreach (ManagementObject queryObj in objSearcher.Get())
{
foreach (PropertyData propertyData in queryObj.Properties)
{
// Gefundene Properties zur Collection hinzufügen
outputCollection.Add(propertyData.Name.ToString(), propertyData.Value.ToString());
}
}
return outputCollection;
}
Kommentare zum Snippet