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.477 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. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... 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 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |