Gestire programmaticamente Windows Firewall
-
13-11-2019 - |
Domanda
Sto cercando di creare a livello di codice una regola del firewall di Windows in uscita.Inoltre, vorrei abilitare e disabilitare programmaticamente questa regola.Come posso andare a fare questo in c #?Manualmente, posso farlo andando in Pannello di controllo, facendo clic su Windows Firewall, quindi facendo clic su Impostazioni avanzate.
Soluzione
È possibile avvolgere la sintassi del comando netsh advfirewall in una piccola libreria per consentire di abilitare / disabilitare le impostazioni su richiesta.In caso contrario, vedere http://msdn.microsoft.com/en-us/library/windows/desktop/ff956124(v=vs.85).aspx per il firewall di Windows con API di sicurezza avanzata.
Altri suggerimenti
È più bello utilizzare la libreria di Windows C: \ Windows \ System32 \ firewallapi.dll.Questa DLL è disponibile da Windows 7. Visual Studio aggiungerà automaticamente un wrapper per questa libreria COM se lo aggiungi ai riferimenti del progetto o si può creare manualmente il wrapper 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 dovrebbe darti dettagli sufficienti sulla lib.