Displaying all Properties
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")