Disabling the Firewall per Interface

This example disables the firewall on a per interface basis using the Windows Firewall with Advanced Security APIs.

'  This VBScript file includes sample code that disables the firewall 
'  on a per interface basis using the Microsoft Windows Firewall APIs.


option explicit


' Profile Type
Const NET_FW_PROFILE2_DOMAIN = 1
Const NET_FW_PROFILE2_PRIVATE = 2
Const NET_FW_PROFILE2_PUBLIC = 4

Dim CurrentProfiles
Dim InterfaceArray
Dim LowerBound
Dim UpperBound
Dim iterate

' Keep firewall ON exept for a specific interface


' Create the FwPolicy2 object.
Dim fwPolicy2

Set fwPolicy2 = CreateObject("HNetCfg.FwPolicy2")

CurrentProfiles = fwPolicy2.CurrentProfileTypes

' The returned 'CurrentProfiles' bitmask can have more than 1 bit set if multiple profiles 
' are active or current at the same time

if ( CurrentProfiles AND NET_FW_PROFILE2_DOMAIN ) then
   if fwPolicy2.FirewallEnabled(NET_FW_PROFILE2_DOMAIN) <> TRUE then
      fwPolicy2.FirewallEnabled(NET_FW_PROFILE2_DOMAIN) = TRUE
   end if

   'Exclude Interfaces such that the firewall is OFF on those interfaces.
   InterfaceArray = Array("Local Area Connection")
   LowerBound = LBound(InterfaceArray)
   UpperBound = UBound(InterfaceArray)
   WScript.Echo("   Excluded interfaces in Domain profile: ")    
   for iterate = LowerBound To UpperBound
      WScript.Echo("    " & InterfaceArray(iterate))
   Next
   fwPolicy2.ExcludedInterfaces(NET_FW_PROFILE2_DOMAIN) = InterfaceArray
end if

if ( CurrentProfiles AND NET_FW_PROFILE2_PRIVATE ) then
   if fwPolicy2.FirewallEnabled(NET_FW_PROFILE2_PRIVATE) <> TRUE then
      fwPolicy2.FirewallEnabled(NET_FW_PROFILE2_PRIVATE) = TRUE
   end if

   'Exclude Interfaces such that the firewall is OFF on those interfaces.
   InterfaceArray = Array("Local Area Connection")
   LowerBound = LBound(InterfaceArray)
   UpperBound = UBound(InterfaceArray)
   WScript.Echo("   Excluded interfaces in Private profile: ")    
   for iterate = LowerBound To UpperBound
      WScript.Echo("    " & InterfaceArray(iterate))
   Next
   fwPolicy2.ExcludedInterfaces(NET_FW_PROFILE2_PRIVATE) = InterfaceArray
end if

if ( CurrentProfiles AND NET_FW_PROFILE2_PUBLIC ) then
   if fwPolicy2.FirewallEnabled(NET_FW_PROFILE2_PUBLIC) <> TRUE then
      fwPolicy2.FirewallEnabled(NET_FW_PROFILE2_PUBLIC) = TRUE
   end if

   'Exclude Interfaces such that the firewall is OFF on those interfaces.
   InterfaceArray = Array("Local Area Connection")
   LowerBound = LBound(InterfaceArray)
   UpperBound = UBound(InterfaceArray)
   WScript.Echo("   Excluded interfaces in Public profile: ")    
   for iterate = LowerBound To UpperBound
      WScript.Echo("    " & InterfaceArray(iterate))
   Next
   fwPolicy2.ExcludedInterfaces(NET_FW_PROFILE2_PUBLIC) = InterfaceArray
end if