Programmatically disable/enable Windows firewall

By petersunde, 24 Jan 2007

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

' 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值