Die Community zu .NET und Classic VB.
Menü

FAQ 0102: Wie ermittle oder ändere ich den Status der Firewall von Windows XP?

 von 

Frage 

Wie ermittle ich den Status der Firewall von Windows XP?

Wie aktiviere oder deaktiviere ich die Firewall von Windows XP?

Antwort  

Folgender Code wurde von Konrad Doblander gepostet:

Private Sub Obtain_And_Change_ICF_Status(ByVal strConnection As String)
  On Error Goto ErrorHandler
  
  Dim SharingMgr As Object
  Dim EachConnection As Object
  Dim ConnectionProps As Object
  Dim item As Object
  Dim Previous_ICF_State As String
  
  Set SharingMgr = CreateObject("HNetCfg.HNetShare.1")
  
  If (Not (SharingMgr Is Nothing)) Then
    For Each item In SharingMgr.EnumEveryConnection
      Set EachConnection = _
            SharingMgr.INetSharingConfigurationForINetConnection(item)
      
      Set ConnectionProps = SharingMgr.NetConnectionProps(item)
      
      If (ConnectionProps.Name = strConnection) Then
        If EachConnection.InternetFirewallEnabled Then
          EachConnection.DisableInternetFirewall
          
          Previous_ICF_State = _
                        "ICF war aktiviert und ist jetzt deaktiviert."

        Else
          EachConnection.EnableInternetFirewall

          Previous_ICF_State = _
                        "ICF war deaktiviert und ist jetzt aktiviert."
     
        End If
          
        Exit For
      End If
    Next item
  End If
    
ExitSub:
  If (Len(Previous_ICF_State) <> 0) Then MsgBox _
    Previous_ICF_State

  Exit Sub
    
ErrorHandler:

  Select Case Err.Number
    Case 55             '   "Datei bereits geöffnet"
      Close #1          '   Datei schließen
      
    Case 70             '   "Zugriff verweigert"
      Call MsgBox("Zugriff aufgrund fehlender Rechte verweigert.", _
                        vbInformation Or vbOKOnly)
      
    Case 429            '   Komponentenerstellung nicht möglich
      Call MsgBox("Komponente kann nicht erstellt werden.", _
                        vbInformation Or vbOKOnly)

    Case Else           '   andere auftretende Fehler hier behandeln
      
  End Select
    
  Resume Next
    
End Sub

Listing 1: Status der Firewall von Windows XP ermitteln

Verschiedentlich wurde gesagt, daß dieser Quelltext nicht oder nicht richtig läuft.
coni hatte deshalb einen Quelltext gepostet, der fehlerfrei, jedoch ohne jede Fehlerbehandlung, arbeitet:

Dim XPFirewall As Object
Dim XPFirewallpolicy As Object

Set XPFirewall = CreateObject("HNetCfg.FwMgr")
Set XPFirewallpolicy = XPFirewall.LocalPolicy.CurrentProfile

XPFirewallpolicy.FirewallEnabled = False

Listing 2: Status der Firewall von Windows XP neu setzen

Nachtrag von Florian Rittmeier:
In der Microsoft Knowledge Base gibt es einige Scripte, die den Umgang mit der Firewall-API demonstrieren.

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.