Feedback

Antivirenprogramm ermitteln

Sprache: C#

Dieses C# Snippet findet zahlreiche Informationen zum installierten Antivirenprogramm. Alternativ kann es auch die aktive Firewall oder den Spywareschutz erkennen. * Die Funktion [b]GetAntiVirusInfoString()[/b] (empfohlen) liefert einen String mit Informationen zum aktuell installierten Virenschutz, in der [b]Form $name: $value[/b], getrennt mit Zeilenumbrüchen. * Die Funktion [b]GetAntiVirusInfo()[/b] liefert eine NameValueCollection mit Informationen zum aktuell installierten Virenschutz. Der Übergabeparameter [b]product[/b] beider Funktionen kann verwendet werden um entweder das [b]AntiVirusProduct, AntiSpywareProduct oder FirewallProduct[/b] zu ermitteln. Unter Windows XP ist die Abfrage nach [b]"root\SecurityCenter2"[/b] eventuell auszutauschen durch "root\SecurityCenter". Beispielanwendung: [code]MessageBox.Show(GetAntiVirusInfoString());[/code]
// 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;
}
// 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;
}