vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: System/Windows   |   VB-Versionen: VB2005, VB200806.05.08
Firewall ein/ausschalten

Das Beispiel prüft den aktuellen Zustand der Firewall und schaltet die Firewall entweder aus- oder ein.

Autor:   Heinz PrelleBewertung:     [ Jetzt bewerten ]Views:  10.957 
www.visual-basic5.deSystem:  WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Vor kurzem hatten wir Ihnen eine Klasse vorgestellt, mit der sich der Status der Windows-Firewall ermitteln lässt:
 Firewall-Status unter WinXP/Vista prüfen

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 10.957 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel