Feedback

C# - Antivirenprogramm ermitteln

Veröffentlicht von am 6/3/2012
(1 Bewertungen)
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

 

Logge dich ein, um hier zu kommentieren!