none
Antivirenprogramm [Status ermitteln, Name ermitteln, usw.] RRS feed

  • Frage

  • Hallo Community,

    Ich möchte gerne mit C# Windows Forms ein ermitteln ob überhaupt ein Antivirenprogramm installiert ist oder nicht.

    Wenn ja, auch Informationen wie Name, Produkt ID, usw..

    Wie kann ich das realisieren?

    Vielen Dank im vorraus,


    MfG ASkuN
    Montag, 18. April 2011 08:36

Antworten

  • Hallo AS,

    binde die "System.Management.dll" ein. Hier noch mal ein BeispielCode mit "SecurityCenter2" (>= Vista SP1) :

     

    using System;
    using System.Management;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WinAntivirusDetection
    {
     public partial class Form1 : Form
     {
     public Form1()
     {
     InitializeComponent();
     }
    
     private void Form1_Load(object sender, EventArgs e)
     {
     InstallierteAntivirusProgrammeAnzeigen();
     }
    
     // using System.Management; // Verweis einbinden: System.Management.dll
     public static void InstallierteAntivirusProgrammeAnzeigen()
     { 
     string wmipathstr = @"\\" + 
     Environment.MachineName + @"\root\SecurityCenter2"; 
     StringBuilder meldung = new StringBuilder();
    
     try 
     { 
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(
      wmipathstr, "SELECT * FROM AntivirusProduct"); 
     ManagementObjectCollection instances = searcher.Get();
     foreach (var item in instances)
     {
      meldung.AppendLine("\r\n==============");
      foreach (var prop in item.Properties)
      {
      meldung.AppendFormat("{0} = '{1}'\r\n",
      prop.Name, prop.Value.ToString());
      }
     }
     }
     catch (Exception e) 
     { 
     MessageBox.Show(e.Message);
     }
     MessageBox.Show("Installierte Antivirus-Programme:\r\n" + meldung.ToString());
     } 
     }
    }
    
    

     


    ciao Frank
    • Als Antwort markiert ASkuN Montag, 18. April 2011 10:00
    • Bearbeitet Frank Dzaebel Montag, 18. April 2011 10:01
    Montag, 18. April 2011 09:46

Alle Antworten

  • Hallo AS.,


    zum Beispiel über WMI:

    [Detect Antivirus on Windows using C# - Stack Overflow]
    http://stackoverflow.com/questions/1331887/detect-antivirus-on-windows-using-c

     


    ciao Frank
    Montag, 18. April 2011 09:19
  • Hallo Frank,

    danke für deine schnelle Antwort, nur leider aus einem Grund den ich mir nicht erklären kann (vielleicht mache ich auch was falsch) funktionieren

    diese Management Objekte in meinem VS2010 nicht (Google habe ich auch benutzt ;))


    MfG ASkuN
    Montag, 18. April 2011 09:29
  • Hi,

    nur leider aus einem Grund den ich mir nicht erklären kann (vielleicht mache ich auch was falsch) funktionieren diese Management Objekte in meinem VS2010 nicht

    was genau heißt "funktionieren nicht"? Poste doch mal bitte den Code, mit dem Du es versucht hast und dazu dann bitte die genaue und vollständige Fehlermeldung.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 18. April 2011 09:38
    Moderator
  • Okey...

    Meine Imports lauten wie folgt:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    using Shield_77x.Properties;
    using System.Management;
    

    Dazu mein Code von der Funktion:

    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;
        }
    

    Und an Fehlermeldung bekomme ich:

    Fehler    1    Der Typ- oder Namespacename "ManagementObjectSearcher" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
    Fehler    2    Der Typ- oder Namespacename "ManagementObjectSearcher" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
    Fehler    3    Der Typ- oder Namespacename "ManagementObjectCollection" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)


    MfG ASkuN
    Montag, 18. April 2011 09:44
  • Hallo AS,

    binde die "System.Management.dll" ein. Hier noch mal ein BeispielCode mit "SecurityCenter2" (>= Vista SP1) :

     

    using System;
    using System.Management;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WinAntivirusDetection
    {
     public partial class Form1 : Form
     {
     public Form1()
     {
     InitializeComponent();
     }
    
     private void Form1_Load(object sender, EventArgs e)
     {
     InstallierteAntivirusProgrammeAnzeigen();
     }
    
     // using System.Management; // Verweis einbinden: System.Management.dll
     public static void InstallierteAntivirusProgrammeAnzeigen()
     { 
     string wmipathstr = @"\\" + 
     Environment.MachineName + @"\root\SecurityCenter2"; 
     StringBuilder meldung = new StringBuilder();
    
     try 
     { 
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(
      wmipathstr, "SELECT * FROM AntivirusProduct"); 
     ManagementObjectCollection instances = searcher.Get();
     foreach (var item in instances)
     {
      meldung.AppendLine("\r\n==============");
      foreach (var prop in item.Properties)
      {
      meldung.AppendFormat("{0} = '{1}'\r\n",
      prop.Name, prop.Value.ToString());
      }
     }
     }
     catch (Exception e) 
     { 
     MessageBox.Show(e.Message);
     }
     MessageBox.Show("Installierte Antivirus-Programme:\r\n" + meldung.ToString());
     } 
     }
    }
    
    

     


    ciao Frank
    • Als Antwort markiert ASkuN Montag, 18. April 2011 10:00
    • Bearbeitet Frank Dzaebel Montag, 18. April 2011 10:01
    Montag, 18. April 2011 09:46
  • Okey danke jetzt gehts ;-)
    MfG ASkuN
    Montag, 18. April 2011 10:00