Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / VB

Programmatically disable/enable Windows firewall

4.34/5 (15 votes)
24 Jan 2007CPOL 1  
This article teaches you how to disable and enable your Windows firewall programmatically.

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

VB
Imports System
Imports NetFwTypeLib

' Provides access to the firewall settings for a computer.
Public Function GetFwMgr() As NetFwTypeLib.INetFwMgr
    Dim oINetFwMgr As NetFwTypeLib.INetFwMgr
    Dim NetFwMgrObject As Object
    Dim NetFwMgrType As Type

    ' Use the COM CLSID to get the associated .NET System.Type
    NetFwMgrType = Type.GetTypeFromCLSID( _
     New Guid("{304CE942-6E39-40D8-943A-B913C40C9CD4}"))

    ' Create an instance of the object
    NetFwMgrObject = Activator.CreateInstance(NetFwMgrType)
    oINetFwMgr = NetFwMgrObject

    Return oINetFwMgr
End Function


' Provides access to the firewall settings profile.
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

' Enable windows firewall.
Public Sub ActivateFirewall()
    Dim fwProfile As NetFwTypeLib.INetFwProfile
    fwProfile = GetProfile()
    fwProfile.FirewallEnabled = True
End Sub

' Disable windows firewall.
Public Sub DisableFirewall()
    Dim fwProfile As NetFwTypeLib.INetFwProfile
    fwProfile = GetProfile()
    fwProfile.FirewallEnabled = False
End Sub

' Firewall state || False = Disabled - True = Enabled.
Public Function FirewallEnabled() As Boolean
    Dim fwProfile As NetFwTypeLib.INetFwProfile
    fwProfile = GetProfile()
    Return fwProfile.FirewallEnabled
End Function

' Enable firewall on Form_Load.
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

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)