2010-12-07 72 views
8

任何人都知道如何以编程方式将IP地址添加到具有高级安全性的Server 2008 Windows防火墙规则?以编程方式将IP添加到Server 2008防火墙规则

即,我已经设置了一个Block Action防火墙规则,该规则在范围的“远程IP地址”部分下列出了一些IP地址。我希望能够以编程方式从此列表中添加(或删除)IP地址。有没有.NET对象可以做到这一点?

回答

8

您也可以尝试netsh环境。
我用过一次改变我的接口的MTU

4

我刚刚在vb.NET中完成了这项工作。 添加refrence到 “C:\ WINDOWS \ SYSTEM32 \ firewallapi.dll”

建立一个叫做防火墙类 - 像这样:

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 IPAddress, ruleName As String) 
     Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName) 
     Dim NewAddress As String = ipAddress.ToString & "/255.255.255.255" 
     If Not firewallRule.RemoteAddresses.Contains(NewAddress) Then 
      firewallRule.RemoteAddresses += "," & NewAddress 
     End If 
    End Sub 

    Public Sub Remove(ipAddress As IPAddress, ruleName As String) 
     Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName) 
     Dim NewAddress As String = ipAddress.ToString & "/255.255.255.255" 
     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 IPAddress, ruleName As String) As Boolean 
     Dim firewallRule As NetFwTypeLib.INetFwRule = Policy.Rules.Item(ruleName) 
     Dim NewAddress As String = ipAddress.ToString & "/255.255.255.255" 
     If firewallRule.RemoteAddresses.Contains(NewAddress) Then 
      Return True 
     Else 
      Return False 
     End If 
    End Function 

    Private disposedValue As Boolean 
    Protected Overridable Sub Dispose(disposing As Boolean) 
     If Not Me.disposedValue Then 
      If disposing Then 
      End If 
      If Not _policy Is Nothing Then 
       _policy = Nothing 
      End If 
     End If 
     Me.disposedValue = True 
    End Sub 

    Public Sub Dispose() Implements IDisposable.Dispose 
     Dispose(True) 
     GC.SuppressFinalize(Me) 
    End Sub 
End Class 
+0

漂亮的代码。为我工作得很好。 – SamTech 2013-08-12 04:42:27

相关问题