Программное управление брандмауэром Windows


Я пытаюсь программно создать исходящее правило брандмауэра Windows. Кроме того, я хотел бы программно включить и отключить это правило. Как я могу сделать это в C#? Вручную, я могу сделать это, зайдя в Панель управления, нажав на Брандмауэр Windows, а затем нажав дополнительные настройки.

2 3

2 ответа:

Вы можете обернуть синтаксис команды netsh advfirewall в небольшую библиотеку, чтобы включить/отключить настройки по требованию. В противном случае, смотрите http://msdn.microsoft.com/en-us/library/windows/desktop/ff956124 (v=vs.85). aspx для брандмауэра Windows с расширенным API безопасности.

Лучше использовать библиотеку Windows C:\windows\system32\FirewallAPI.файл DLL. Эта библиотека доступна только в Windows 7. Visual Studio автоматически добавит оболочку для этой библиотеки COM, Если вы добавите ее в ссылки на проект, или вы можете создать оболочку вручную с помощью 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 должен предоставить вам достаточно подробных сведений о lib.