2010-12-07 16 views
8

¿Alguien sabe cómo agregar mediante programación una dirección IP a una regla de Servidor 2008 Firewall de Windows con seguridad avanzada?Agregue programáticamente regla de cortafuegos de IP a Server 2008

es decir, he configurado una regla de cortafuegos Block Action que tiene algunas direcciones IP enumeradas en la sección "Dirección IP remota" del Ámbito. Quiero poder agregar (o quizás eliminar) por programación las direcciones IP de esta lista. ¿Hay objetos .NET disponibles para hacer esto?

Respuesta

8

También puede probar el medio ambiente netsh.
he usado una vez para cambiar la MTU de mi interfaz

4

Acabo de hacer esto en vb.NET. Añadir un refrence a "C: \ windows \ system32 \ firewallapi.dll"

hacer una clase llamada Firewall - de este modo:

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

código de Niza. Trabajando bien para mi – SamTech

Cuestiones relacionadas