Introduction
This article teaches you how to disable and enable your Windows firewall programmatically.
Setup
- Create a new Windows Application project.
- Click on Project->Add Reference and add the following files:
- Click Browse tab -> Add C:\windows\system32\Hnetcfg.dll.
- Click COM tab -> Add NetFwTypeLib.
Requirements
Currently, this only works with Windows XP SP2. If you need support for this in Vista, add Wfapi.dll.
Source
Imports System
Imports NetFwTypeLib
Public Function GetFwMgr() As NetFwTypeLib.INetFwMgr
Dim oINetFwMgr As NetFwTypeLib.INetFwMgr
Dim NetFwMgrObject As Object
Dim NetFwMgrType As Type
NetFwMgrType = Type.GetTypeFromCLSID( _
New Guid("{304CE942-6E39-40D8-943A-B913C40C9CD4}"))
NetFwMgrObject = Activator.CreateInstance(NetFwMgrType)
oINetFwMgr = NetFwMgrObject
Return oINetFwMgr
End Function
Public Function GetProfile() As NetFwTypeLib.INetFwProfile
Dim oINetPolicy As NetFwTypeLib.INetFwPolicy
Dim oINetFwMgr As NetFwTypeLib.INetFwMgr
oINetFwMgr = GetFwMgr()
oINetPolicy = oINetFwMgr.LocalPolicy
Return oINetPolicy.CurrentProfile
End Function
Public Sub ActivateFirewall()
Dim fwProfile As NetFwTypeLib.INetFwProfile
fwProfile = GetProfile()
fwProfile.FirewallEnabled = True
End Sub
Public Sub DisableFirewall()
Dim fwProfile As NetFwTypeLib.INetFwProfile
fwProfile = GetProfile()
fwProfile.FirewallEnabled = False
End Sub
Public Function FirewallEnabled() As Boolean
Dim fwProfile As NetFwTypeLib.INetFwProfile
fwProfile = GetProfile()
Return fwProfile.FirewallEnabled
End Function
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
If FirewallEnabled() = False Then
ActivateFirewall()
Else
DisableFirewall()
End If
MessageBox.Show("Firewall enabled: " & FirewallEnabled())
End Sub