Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following code example displays all properties of the current Windows Firewall profile.
Option Explicit
' Define Constants from the SDK and their associated string name
' Scope
Const NET_FW_SCOPE_ALL = 0
Const NET_FW_SCOPE_ALL_NAME = "All subnets"
Const NET_FW_SCOPE_LOCAL_SUBNET = 1
Const NET_FW_SCOPE_LOCAL_SUBNET_NAME = "Local subnet only"
Const NET_FW_SCOPE_CUSTOM = 2
Const NET_FW_SCOPE_CUSTOM_NAME = "Custom Scope (see RemoteAddresses)"
' Profile Type
Const NET_FW_PROFILE_DOMAIN = 0
Const NET_FW_PROFILE_DOMAIN_NAME = "Domain"
Const NET_FW_PROFILE_STANDARD = 1
Const NET_FW_PROFILE_STANDARD_NAME = "Standard"
' IP Version
Const NET_FW_IP_VERSION_V4 = 0
Const NET_FW_IP_VERSION_V4_NAME = "IPv4"
Const NET_FW_IP_VERSION_V6 = 1
Const NET_FW_IP_VERSION_V6_NAME = "IPv6"
Const NET_FW_IP_VERSION_ANY = 2
Const NET_FW_IP_VERSION_ANY_NAME = "ANY"
' Protocol
Const NET_FW_IP_PROTOCOL_TCP = 6
Const NET_FW_IP_PROTOCOL_TCP_NAME = "TCP"
Const NET_FW_IP_PROTOCOL_UDP = 17
Const NET_FW_IP_PROTOCOL_UDP_NAME = "UDP"
' Create the firewall manager object.
Dim fwMgr
Set fwMgr = CreateObject("HNetCfg.FwMgr")
' Get the current profile for the local firewall policy.
Dim profile
Set profile = fwMgr.LocalPolicy.CurrentProfile
dim msgOut
msgOut = vbCrLf & "Dumping local firewall profile ..."
' Print the Profile information
Select Case profile.Type
  Case NET_FW_PROFILE_DOMAIN msgOut = msgOut & "Type: " & _
    NET_FW_PROFILE_DOMAIN_NAME & vbcrlf
  Case NET_FW_PROFILE_STANDARD msgOut = msgOut & "Type: " & _
    NET_FW_PROFILE_STANDARD_NAME  & vbcrlf
End Select
WScript.Echo(msgOut)
msgOut = "Firewall Enabled: " & profile.FirewallEnabled & vbCrLf
msgOut = msgOut & "Exceptions Not Allowed: " & _
  profile.ExceptionsNotAllowed & vbCrLf
msgOut = msgOut & "Notifications Disabled: " & _
  profile.NotificationsDisabled & vbCrLf
msgOut = msgOut & "UnicastResponsestoMulticastBroadcastDisabled: " &  _
  profile.UnicastResponsestoMulticastBroadcastDisabled & vbCrLf
WScript.Echo(msgOut)
' Print the Remote Admin settings.
Dim RASettings
Set RASettings = profile.RemoteAdminSettings
msgOut = "Remote Administration Enabled: " & RASettings.Enabled & vbCrLf
Select Case RASettings.IpVersion
    Case NET_FW_IP_VERSION_V4 msgOut = msgOut & _
      "Remote Administration IP Version: " &  _
      NET_FW_IP_VERSION_V4_NAME & vbCrLf
    Case NET_FW_IP_VERSION_V6 msgOut = msgOut & _
      "Remote Administration IP Version: " &  _ 
      NET_FW_IP_VERSION_V6_NAME & vbCrLf
    Case NET_FW_IP_VERSION_ANY msgOut = msgOut & _
      "Remote Administration IP Version: " &  _
      NET_FW_IP_VERSION_ANY_NAME & vbCrLf
End Select
Select Case RASettings.Scope
    Case NET_FW_SCOPE_ALL msgOut = msgOut & _
      "Remote Administration Scope: " &  _
      NET_FW_SCOPE_ALL_NAME & vbCrLf
    Case NET_FW_SCOPE_LOCAL_SUBNET msgOut = msgOut & _
      "Remote Administration Scope: " &  _
      NET_FW_SCOPE_LOCAL_SUBNET_NAME & vbCrLf
    Case NET_FW_SCOPE_CUSTOM msgOut = msgOut & _
      "Remote Administration Scope: " &  _
      NET_FW_SCOPE_CUSTOM_NAME & vbCrLf
End Select
msgOut = msgOut & "Remote Administration RemoteAddresses: " &  _
  RASettings.RemoteAddresses & vbCrLf
WScript.Echo( msgOut & vbCrLf)
' Print the ICMP Settings.
Dim icmpSettings
Set icmpSettings = profile.IcmpSettings
msgOut = "ICMP Settings:" & vbCrLf
msgOut = msgOut & "  AllowOutboundDestinationUnreachable: " & _
  icmpSettings.AllowOutboundDestinationUnreachable & vbCrLf
msgOut = msgOut & "  AllowOutboundSourceQuench:           " & _
  icmpSettings.AllowOutboundSourceQuench & vbCrLf
msgOut = msgOut & "  AllowRedirect:                       " & _
  icmpSettings.AllowRedirect & vbCrLf
msgOut = msgOut & "  AllowInboundEchoRequest:             " & _
  icmpSettings.AllowInboundEchoRequest & vbCrLf
msgOut = msgOut & "  AllowInboundRouterRequest:           " & _
  icmpSettings.AllowInboundRouterRequest & vbCrLf
msgOut = msgOut & "  AllowOutboundTimeExceeded:           " & _
  icmpSettings.AllowOutboundTimeExceeded & vbCrLf
msgOut = msgOut & "  AllowOutboundParameterProblem:       " & _
  icmpSettings.AllowOutboundParameterProblem & vbCrLf
msgOut = msgOut & "  AllowInboundTimestampRequest:        " & _
  icmpSettings.AllowInboundTimestampRequest & vbCrLf
msgOut = msgOut & "  AllowInboundMaskRequest:             " & _
  icmpSettings.AllowInboundMaskRequest & vbCrLf
WScript.Echo( msgOut & vbCrLf)
' Print all the globally open ports.
msgOut = "Globally Open Ports: " & profile.GloballyOpenPorts.Count & vbCrLf
WScript.Echo( msgOut )
msgOut = ""
Dim port
For Each port In profile.GloballyOpenPorts
    msgOut = msgOut & "  Name:               " & port.Name & vbCrLf
    msgOut = msgOut & "  Port Number:        " & port.Port & vbCrLf
    Select Case port.Protocol
        Case NET_FW_IP_PROTOCOL_TCP msgOut = msgOut & _
          "  IP Protocol:        " &  NET_FW_IP_PROTOCOL_TCP_NAME & vbCrLf
        Case NET_FW_IP_PROTOCOL_UDP msgOut = msgOut & _
          "  IP Protocol:        " &  NET_FW_IP_PROTOCOL_UDP_NAME & vbCrLf
    End Select
    msgOut = msgOut & "  BuiltIn:            " & port.BuiltIn & vbCrLf
    Select Case port.IpVersion
        Case NET_FW_IP_VERSION_V4 msgOut = msgOut & _
          "  IP Version:         " &  NET_FW_IP_VERSION_V4_NAME & vbCrLf
        Case NET_FW_IP_VERSION_V6 msgOut = msgOut & _
          "  IP Version:         " &  NET_FW_IP_VERSION_V6_NAME & vbCrLf
        Case NET_FW_IP_VERSION_ANY msgOut = msgOut & _
          "  IP Version:         " &  NET_FW_IP_VERSION_ANY_NAME & vbCrLf
    End Select
    Select Case port.Scope
        Case NET_FW_SCOPE_ALL msgOut = msgOut & _
          "  Scope:              " &  NET_FW_SCOPE_ALL_NAME & vbCrLf
        Case NET_FW_SCOPE_LOCAL_SUBNET msgOut = msgOut & _
          "  Scope:              " &  NET_FW_SCOPE_LOCAL_SUBNET_NAME & vbCrLf
        Case NET_FW_SCOPE_CUSTOM msgOut = msgOut & _
          "  Scope:              " &  NET_FW_SCOPE_CUSTOM_NAME & vbCrLf
    End Select
    msgOut = msgOut & "  RemoteAddresses:    " & _
      port.RemoteAddresses & vbCrLf
    msgOut = msgOut & "  Enabled:            " & _
      port.Enabled & vbCrLf & vbCrLf
  WScript.Echo( msgOut )
  msgOut = ""
Next
' Print all the services
msgOut = "Services: " & profile.Services.Count & vbCrLf
WScript.Echo( msgOut )
msgOut = ""
Dim service
For Each service In profile.Services
  msgOut = msgOut & "  Name:                " & _
         service.Name & vbCrLf
    msgOut = msgOut & "  Type:                " & _
         service.Type & vbCrLf
    msgOut = msgOut & "  Customized:          " & _
         service.Customized & vbCrLf
    Select Case service.IpVersion
        Case NET_FW_IP_VERSION_V4 msgOut = msgOut & _
              "  IP Version:          " &  NET_FW_IP_VERSION_V4_NAME & vbCrLf
        Case NET_FW_IP_VERSION_V6 msgOut = msgOut & _
              "  IP Version:          " &  NET_FW_IP_VERSION_V6_NAME & vbCrLf
        Case NET_FW_IP_VERSION_ANY msgOut = msgOut & _
              "  IP Version:          " &  NET_FW_IP_VERSION_ANY_NAME & vbCrLf
    End Select
    Select Case service.Scope
        Case NET_FW_SCOPE_ALL msgOut = msgOut & _
              "  Scope:              " &  NET_FW_SCOPE_ALL_NAME & vbCrLf
        Case NET_FW_SCOPE_LOCAL_SUBNET msgOut = msgOut & _
              "  Scope:              " &  NET_FW_SCOPE_LOCAL_SUBNET_NAME & vbCrLf
        Case NET_FW_SCOPE_CUSTOM msgOut = msgOut & _
              "  Scope:              " &  NET_FW_SCOPE_CUSTOM_NAME & vbCrLf
    End Select
    msgOut = msgOut & "  RemoteAddresses:     " & _
         service.RemoteAddresses & vbCrLf
    msgOut = msgOut & "  Enabled:             " & _
         service.Enabled & vbCrLf
  WScript.Echo( msgOut )
  msgOut = ""
      'Display header for Service Ports list
  msgOut = msgOut & "Service: " & service.Name & " Globally Open Ports: " & _
    service.GloballyOpenPorts.Count & vbCrLf
    For Each port In service.GloballyOpenPorts
      msgOut = msgOut & "    Name:               " & _
        port.Name & vbCrLf
      msgOut = msgOut & "    Port Number:        " & _
        port.Port & vbCrLf
      Select Case port.Protocol
        Case NET_FW_IP_PROTOCOL_TCP msgOut = msgOut & _
          "    IP Protocol:        " &  NET_FW_IP_PROTOCOL_TCP_NAME & vbCrLf
        Case NET_FW_IP_PROTOCOL_UDP msgOut = msgOut & _
                         "    IP Protocol:        " &  NET_FW_IP_PROTOCOL_UDP_NAME & vbCrLf
      End Select
      msgOut = msgOut & "    BuiltIn:            " & port.BuiltIn & vbCrLf
      Select Case port.IpVersion
        Case NET_FW_IP_VERSION_V4 msgOut = msgOut & _
                         "    IP Version:         " &  NET_FW_IP_VERSION_V4_NAME & vbCrLf
        Case NET_FW_IP_VERSION_V6 msgOut = msgOut & _
                         "    IP Version:         " &  NET_FW_IP_VERSION_V6_NAME & vbCrLf
        Case NET_FW_IP_VERSION_ANY msgOut = msgOut & _
                         "    IP Version:         " &  NET_FW_IP_VERSION_ANY_NAME & vbCrLf
      End Select
      Select Case port.Scope
        Case NET_FW_SCOPE_ALL msgOut = msgOut & _
                         "    Scope:              " &  NET_FW_SCOPE_ALL_NAME & vbCrLf
        Case NET_FW_SCOPE_LOCAL_SUBNET msgOut = msgOut & _
                         "    Scope:              "  & NET_FW_SCOPE_LOCAL_SUBNET_NAME & vbCrLf
        Case NET_FW_SCOPE_CUSTOM msgOut = msgOut & _
                         "    Scope:              " &  NET_FW_SCOPE_CUSTOM_NAME & vbCrLf
      End Select
      msgOut = msgOut & "    RemoteAddresses:    " & _
        port.RemoteAddresses & vbCrLf
      msgOut = msgOut & "    Enabled:            " & _
        port.Enabled & vbCrLf & vbCrLf
    Next
     
    WScript.Echo( msgOut )
    msgOut = ""
Next
' Print all the authorized applications
msgOut = "Authorized Applications: " & _
    profile.AuthorizedApplications.Count & vbCrLf
Dim app
For Each app In profile.AuthorizedApplications
    msgOut = msgOut & "  Name:               " & _
         app.Name & vbCrLf
    msgOut = msgOut & "  Image Filename      " & _
         app.ProcessImageFileName & vbCrLf
    Select Case app.IpVersion
        Case NET_FW_IP_VERSION_V4 msgOut = msgOut & _
              "  IP Version:         " &  NET_FW_IP_VERSION_V4_NAME & vbCrLf
        Case NET_FW_IP_VERSION_V6 msgOut = msgOut & _
              "  IP Version:         " &  NET_FW_IP_VERSION_V6_NAME & vbCrLf
        Case NET_FW_IP_VERSION_ANY msgOut = msgOut & _
              "  IP Version:         " &  NET_FW_IP_VERSION_ANY_NAME & vbCrLf
    End Select
    Select Case app.Scope
        Case NET_FW_SCOPE_ALL msgOut = msgOut & _
              "  Scope:              " &  NET_FW_SCOPE_ALL_NAME & vbCrLf
        Case NET_FW_SCOPE_LOCAL_SUBNET msgOut = msgOut & _
              "  Scope:              " _
            &  NET_FW_SCOPE_LOCAL_SUBNET_NAME & vbCrLf
        Case NET_FW_SCOPE_CUSTOM msgOut = msgOut & _
              "  Scope:              " &  NET_FW_SCOPE_CUSTOM_NAME & vbCrLf
    End Select
    msgOut = msgOut & "  RemoteAddresses:    " & _
         app.RemoteAddresses & vbCrLf
    msgOut = msgOut & "  Enabled:            " & _
         app.Enabled & vbCrLf
    WScript.Echo( msgOut )
    msgOut = ""
Next
WScript.echo ("The End")