Administrar programáticamente el firewall de Windows
-
13-11-2019 - |
Pregunta
Estoy tratando de crear programáticamente una regla de firewall de Windows de salida.Además, me gustaría habilitar y deshabilitar programáticamente esta regla.¿Cómo puedo hacer esto en C #?Manualmente, puedo hacerlo al entrar en el panel de control, haciendo clic en Windows Firewall, luego haciendo clic en Configuración avanzada.
Solución
Puede envolver la sintaxis de comandos de Netsh Advfirewall en una pequeña biblioteca para permitirle habilitar / deshabilitar la configuración a pedido.Fallando eso, consulte http://msdn.microsoft.com/en-us/library/windows/Desktop/ff956124(v=vs.85).aspx para el firewall de Windows con API de seguridad avanzada.
Otros consejos
Es mejor usar la Biblioteca de Windows C: \ Windows \ System32 \ firewallapi.dll.Esta DLL está disponible ya que Windows 7. Visual Studio agregará automáticamente una envoltura para esta biblioteca COM si lo agrega a las referencias de su proyecto o puede crear la envoltura manualmente con tlbimp.exe.
using NetFwTypeLib;
INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
firewallRule.Description = "Your rule description";
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN; // inbound
firewallRule.Enabled = true;
firewallRule.InterfaceTypes = "All";
firewallRule.RemoteAddresses = "1.2.3.0/24"; // add more blocks comma separated
firewallRule.Name = "You rule name";
firewallPolicy.Rules.Add(firewallRule);
vs IntelliSense debe darle detalles suficientes en el LIB.