| 

.NET C# Java Javascript Exception

0
Ich würde gerne in meinem c# Programm prüfen, ob eine Firewall auf dem PC aktiv ist. Dabei sollte aber geprüft werden, ob IRGENDEINE Firewall aktiv ist - nicht nur die Windows Firewall (hierzu habe ich bereits einige Anleitungen gefunden). Da verschiedene Kunden verschiedene Firewall Produkte von Norton, Kaspersky, McAffee und wie sie alle heißen einsetzen, wäre das sehr wichtig zu wissen. Noch schöner wäre es dann, wenn ich auch noch per c# Programm prüfen kann, ob ein bestimmter Port geblockt wird oder nicht.
News:
15.04.2011
mlitters 234 1 8
2 Antworten
1
Es gibt eine WMI-Zweig der für Firewall-Produkte gedacht ist. Manche AV-Produkte tragen sich jedoch ebenfalls hier ein.

var wmiQuery = new ObjectQuery( "SELECT * FROM FirewallProduct" );
var managementObjectSearcher = new ManagementObjectSearcher( wmiQuery );

foreach ( ManagementObject m in managementObjectSearcher.Get() ){
Console.WriteLine(String.Format("{0} : {1}", "CompanyName", m["CompanyName"].ToString()));
Console.WriteLine(String.Format("{0} : {1}", "DisplayName", m["DisplayName"].ToString()));
Console.WriteLine(String.Format("{0} : {1}", "versionNumber", m["versionNumber"].ToString()));
//Console.WriteLine(String.Format("{0} : {1}", "Enabled", m["Enabled"].ToString()));
}


Windows XP

Namespace : SecurityCenter
Classes availables: AntiVirusProduct, FirewallProduct

AntiVirusProduct-Properties

companyName
displayName
enableOnAccessUIMd5Hash
enableOnAccessUIParameters
instanceGuid
onAccessScanningEnabled
pathToEnableOnAccessUI
pathToUpdateUI
productUptoDate
updateUIMd5Hash
updateUIParameters
versionNumber

FirewallProduct-Properties

companyName
displayName
enabled
enableUIMd5Hash
enableUIParameters
instanceGuid
pathToEnableUI
versionNumber

Windows Vista and Windows 7

Namespace : SecurityCenter2
Classes availables : AntiVirusProduct, AntiSpywareProduct, FirewallProduct

AntiVirusProduct, AntiSpywareProduct, FirewallProduct – Properties

displayName
instanceGuid
pathToSignedProductExe
pathToSignedReportingExe
productState

Quelle: http://theroadtodelphi.wordpress.com/2011/02/18/getting-the-installed-antivirus-antispyware-and-firewall-software-using-delphi-and-the-wmi/
18.04.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
Vielen Dank für die Info. Nach einigem herumprobieren mit Fehlern, habe ich gesehen, dass ich noch den Namespace angeben muss. Das habe ich nun folgendermaßen getan:

var wmiService = new ManagementScope("\\\\localhost\\root\\SecurityCenter2");

Allerdings kommt bei mir unter Windows Vista und 7 lediglich eine Info "Nicht gefunden", obwohl Kaspersky installiert ist. Muss ich noch irgendetwas beachten?
mlitters 18.04.2011
Kann ich dir leider nicht sagen. Ich kann dir nur sagen, das es 2 Namespaces gibt "SecurityCenter" und "SecurityCenter2". Hab meinen Beitrag entsprechend angepasst.
Floyd 18.04.2011
Probier es aber mal mit:

ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmipathstr, "SELECT * FROM FirewallProduct");

Im Namespace: @"\\" + Environment.MachineName + @"\root\SecurityCenter"
Floyd 18.04.2011
Vielen Dank. Genau auf der Seite hatte ich die Info mit dem Namespace gefunden... Komme momentan aber leider nicht vorwärts. Auch mit dem Tipp weiter unten mit Environment.MachineName kommt immer die gleiche Meldung "Nicht gefunden"... Unter Windows XP kommt gar nichts. Ich fürchte man muss doch den umständlichen und unsicheren Weg gehen und nach bekannten Produkten suchen...
mlitters 19.04.2011
Hab das ganze mal ausprobiert. Das "Nicht gefunden" kommt bei der Zeile:
Console.WriteLine(String.Format("{0} : {1}", "Enabled", m["Enabled"].ToString()));
wenn man die raus nimmt gehts bei mir.
Floyd 19.04.2011
Es funktioniert wohl doch. Nur Kaspersky (den ich benutze) scheint sich dort nicht einzutragen... D.h. man muss wohl mehrgleißig fahren.... Vielen Dank für die Tipps!
mlitters 19.04.2011
Laut einem Beitrag den ich vor kurzen zum Thema SecurityCenter gelesen habe geht Microsoft ebenfalls 2 Wege. Als erstes suchen Sie in der WMI nach den installierten Produkten. Darüber hinaus pflegen Sie aber auch noch eine Liste von Registry-Keys bekannter FW- und AV-Produkten und prüfen diese ebenfalls. Natürlich steht diese Liste aber nicht online frei zur Verfügung ;)
Floyd 19.04.2011
1
Ich denke, das ist mein letzter Nachtrag: Kaspersky erkennt er auch, allerdings hat er Probleme mit den Schlüsseln CompanyName und Version gehabt. Nachdem ich die alle entfernt habe, erkennt er den DisplayName... SUPER!
mlitters 19.04.2011
0
Ich glaube nicht, dass es eine Möglichkeit gibt, das zu überprüfen, aber soviel Firewall Produkte gibt es ja auch wieder nicht. Wenn du einfach die Installations-Verzeichnisse überprüfst und mit einer Xml Datei mögliche Produkte auflistest, dürfte das ausreichen.

Wenn du Ports überprüfen willst, könntest du mit Services arbeiten. Das heisst du hostest auf dem Client ein Service der einen Art "Ping" beantworten kann und auf dem Server ein Service, der Pings sendet.

Über Port 80 (der sollte ja immer offen sein) kannst du dann nach Ergebnissen zu bestimmten Pings fragen.
17.04.2011
sebastianstehle 444 6
Danke für die Info. Ich denke/hoffe, dass es irgendwo eine zentrale Stelle gibt, an der sich eine Firewall einklinkt, da die Windows Firewall das ja auch merkt, wenn ein Fremdprodukt installiert ist. Und alle Firewallprodukte zu scannen ist natürlich eine sehr wackelige Sache, da es durchaus viele Produkte gibt und man dann auch permanent aufpassen muss, dass sich die Verzeichnisnamen nicht drastisch ändern... Dazu kommen noch die verschiedenen Windows Versionen und x86/x64...
Vielleicht hat noch jemand eine Idee??? Wenn es in C++ eine Lösung gibt, nehme ich die auch gerne :-)
mlitters 17.04.2011

Stelle deine .net-Frage jetzt!