以编程方式在windows防火墙规则中添加ipv6地址



我正在努力将ipv6地址添加到防火墙规则,我能够添加ipv4。谁能帮我一下,那就太好了


Imports NetFwTypeLib
Imports System.Net

Public Class Firewall
Implements IDisposable
Private _policy As INetFwPolicy2 = Nothing
Private ReadOnly Property Policy As INetFwPolicy2
Get
If _policy Is Nothing Then
_policy = DirectCast(Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2")), INetFwPolicy2)
End If
Return _policy
End Get
End Property
Public Sub Add(ipAddress As String, ruleName As String)
Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName)
'Dim NewAddress As String = ipAddress.ToString & "/255.255.255.255"
Dim NewAddress As String = ipAddress.ToString
If Not firewallRule.RemoteAddresses.Contains(NewAddress) Then
firewallRule.RemoteAddresses += "," & NewAddress
End If
End Sub
End Class

以防其他人遇到同样的问题找到了答案

Imports System.Net

Public Class Firewall
Implements IDisposable
Private _policy As INetFwPolicy2 = Nothing
Private ReadOnly Property Policy As INetFwPolicy2
Get
If _policy Is Nothing Then
_policy = DirectCast(Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2")), INetFwPolicy2)
End If
Return _policy
End Get
End Property
Public Sub Add(ipAddress As String, ruleName As String)
Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName)
Dim NewAddress As String
If IpClass(ipAddress).Equals("ipv4") Then
NewAddress = ipAddress.ToString & "/255.255.255.255"
Else
NewAddress = ipAddress.ToString & "/128"
End If
If Not firewallRule.RemoteAddresses.Contains(NewAddress) Then
firewallRule.RemoteAddresses += "," & NewAddress
End If
End Sub


Public Sub Remove(ipAddress As String, ruleName As String)
Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName)
Dim NewAddress As String
If IpClass(ipAddress).Equals("ipv4") Then
NewAddress = ipAddress.ToString & "/255.255.255.255"
Else
NewAddress = ipAddress.ToString & "/128"
End If
If firewallRule.RemoteAddresses.Contains(NewAddress) Then
Dim ipList As String = firewallRule.RemoteAddresses
ipList = ipList.Replace(NewAddress, "")
ipList = ipList.Replace(",,", ",")
firewallRule.RemoteAddresses = ipList
End If
End Sub  

Public Function Exists(ipAddress As String, ruleName As String) As Boolean
Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName)
Dim NewAddress4 As String = ipAddress.ToString & "/255.255.255.255"
Dim NewAddress6 As String = ipAddress.ToString & "/128"
If firewallRule.RemoteAddresses.Contains(NewAddress4) Or firewallRule.RemoteAddresses.Contains(NewAddress6) Then
Return True
Else
Return False
End If
End Function
Public Function IsAddressValid(ByVal addrString As String) As Boolean
Dim address As IPAddress = Nothing
Return IPAddress.TryParse(addrString, address)
End Function

Public Function IpClass(ipAddress As String) As String
If ipAddress.Contains(".") Then
Return "ipv4"
Else
Return "ipv6"
End If
End Function


最新更新