2010-12-07 2 views
8

Кто-нибудь знает, как программно добавить IP-адрес в брандмауэр Windows Server 2008 с расширенной безопасностью?Программно добавить правило IP-сервера для сервера 2008

Т.е. я установил правило брандмауэра Block Action, в котором есть некоторые IP-адреса, перечисленные в разделе «Удаленный IP-адрес» области действия. Я хочу иметь возможность программно добавлять (или, возможно, удалять) IP-адреса из этого списка. Существуют ли для этого объекты .NET?

ответ

11

Брандмауэр Windows в режиме повышенной безопасности Start Page можно найти по адресу:

http://msdn.microsoft.com/en-us/library/ff956124(v=VS.85).aspx

В частности, это, кажется, вам нужно INetFwRule интерфейс, который описанный в:

http://msdn.microsoft.com/en-us/library/aa365344(v=VS.85).aspx

Проверьте get_RemoteAddresses и put_RemoteAddresses

8

Вы также можете попробовать netsh среду.
я использовал его один раз для изменения MTU моего интерфейса

4

Я только что сделал эту работу в vb.NET. Добавить refrence в "C: \ Windows \ system32 \ firewallapi.dll"

сделать класс под названием Firewall - вот так:

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

Nice код. Хорошо работать для меня. – SamTech 2013-08-12 04:42:27

Смежные вопросы