Vor kurzem hatten wir Ihnen eine Klasse vorgestellt, mit der sich der Status der Windows-Firewall ermitteln lässt: Heute erweitern wir den Code um die Möglichkeit die Firewall unter Windows XP / Vista gezielt ein- oder auszuschalten. Erstellen Sie ein neues Windows-Forms Projekt und platzieren auf die Form einen Button (Button1). Fügen Sie nachfolgende Code in den Codeteil der Form ein: Public Class Form1 ' Benötigte Variable zum Prüfen des Status der Windows Firewall Private FirewallState As Boolean ''' <summary> ''' Klasse zum Prüfen, Ein- und Ausschalten der Firewall ''' </summary> Public Class Firewall ''' <summary> ''' Prüfen ob das Betriebssystem unterstützt wird ''' </summary> Public Shared ReadOnly Property OS() As Boolean Get Return Firewall.IsWindowsXPOrHigher() End Get End Property ''' <summary> ''' Rückgabe des aktuellen Firewall Status ''' </summary> Public Shared ReadOnly Property ReturnFirewallState() As Boolean Get Return Firewall.IsFirewallEnabled() End Get End Property ''' <summary> ''' Rückgabe der Programm ID an die aufrufende Funktion ''' </summary> Private Shared ReadOnly Property ProgId() As String Get Return "HNetCfg.FwMgr" End Get End Property ''' <summary> ''' Prüfen ob die Firewall eingeschaltet ist oder nicht ''' </summary> ''' <returns>Status der Firewall</returns> Private Shared Function IsFirewallEnabled() As Boolean ' Variablen deklarieren... Dim hObject As Object Dim cp As Object Dim State As Boolean ' Fehlerüberwachung einschalten Try ' ... und initialisieren... hObject = CreateObject(ProgId) cp = hObject.LocalPolicy.CurrentProfile ' Rückgabe = True If cp.FirewallEnabled Then State = True Else ' ... sonst False State = False End If ' Resourcen freigeben. cp = Nothing hObject = Nothing ' Status zurückgeben Return State Catch ex As Exception ' Wenn Fehler False zurückgeben Return False End Try End Function ''' <summary> ''' Schaltet die Firewall ein / aus ''' </summary> Public Shared Sub DisableOrEnableFirewall(ByVal Index As String) ' Fehlerüberwachung einschalten Try Select Case Index Case "disable" ' Firewall ausschalten Dim CurrentProfile As Object = MakeObject() CurrentProfile.FirewallEnabled = False Case "enable" ' Firewall einschalten Dim CurrentProfile As Object = MakeObject() CurrentProfile.FirewallEnabled = True Case Else End Select Catch ex As Exception ' Eventuell auftretenden Fehler abfangen ' und Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info") End Try End Sub ''' <summary> ''' Objektrückgabe ''' </summary> Private Shared Function MakeObject() As Object Dim hObject As Object = CreateObject(ProgId) Dim CurrentProfile As Object = hObject.LocalPolicy.CurrentProfile Return CurrentProfile End Function ''' <summary> ''' Prüft ob das verwendete Betriebssystem unterstützt wird ''' </summary> Private Shared Function IsWindowsXPOrHigher() As Boolean Dim OS As OperatingSystem = Environment.OSVersion Dim Result As Boolean = OS.Platform = PlatformID.Win32NT AndAlso _ ((OS.Version.Major = 5 AndAlso _ OS.Version.Minor >= 1) OrElse _ OS.Version.Major > 5) If Result Then Return True Else Return False End If End Function End Class ''' <summary> ''' Meldung über den aktuellen Status der Firewall zurückgeben ''' </summary> Private Function Message(ByVal Index As Integer) As String Dim msg As String = "" Select Case Index Case 0 msg = "Firewall ist eingeschaltet - Klicken zum ausschalten" Case 1 msg = "Firewall ist ausgeschaltet - Klicken zum einschalten" Case 2 msg = "Das Beispiel ist für Windows XP oder höher" End Select Return msg End Function Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Prüfen ob das Betriebssystem unterstützt wird If Firewall.OS Then ' Aktuellen Status der Firewall abfragen - Eingeschaltet oder nicht Me.FirewallState = Firewall.ReturnFirewallState() Select Case Me.FirewallState Case True ' Ist die Firewall eingeschaltet wird sie hier ausgeschaltet... Firewall.DisableOrEnableFirewall("disable") Case Else ' ... und hier wieder eingescahltet Firewall.DisableOrEnableFirewall("enable") End Select Else ' Wird das OS nicht unterstützt dann wird eine Meldung ausgegeben MessageBox.Show(Message(2), "Info") End If ' Den aktuellen Status der Variable FirewallState verwenden um die ' Button(-Beschriftungen) zu ändern. If Me.FirewallState = True Then Me.Button1.Text = Message(1) Else Me.Button1.Text = Message(0) End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Prüfen ob das Betriebssystem unterstützt wird If Firewall.OS Then ' Aktuellen Status der Firewall abfragen - Eingeschaltet oder nicht Me.FirewallState = Firewall.ReturnFirewallState() ' Status als Button-Beschriftung ausgeben Select Case Me.FirewallState Case True Me.Button1.Text = Message(0) Case Else Me.Button1.Text = Message(1) End Select Else ' Wird das OS nicht unterstützt dann wird eine Meldung ausgegeben MessageBox.Show(Message(2), "Info") Me.Button1.Enabled = False End If End Sub End Class Dieser Tipp wurde bereits 13.476 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |