Q:

Programmatically manage Windows FireWall

I am trying to programmatically create an Outbound Windows firewall rule. In addition, I'd like to programmatically enable and disable this rule. How can I go about doing this in C#? Manually, I can do this by going into control panel, clicking on Windows Firewall, then clicking advanced settings. 

A:

You could wrap the netsh advfirewall command syntax into a small library to allow you to enable/disable settings on demand. Failing that, see http://msdn.microsoft.com/en-us/library/windows/desktop/ff956124(v=vs.85).aspx for the Windows Firewall with Advanced Security API.

A:

It's nicer to use the Windows library C:\windows\system32\FirewallAPI.dll. This DLL is available since Windows 7. Visual Studio will automatically add a wrapper for this COM library if you add it to your project references or you can create the wrapper manually with 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 should give you sufficient details on the lib.

