Мне нужно реализовать инструмент, который добавляет и удаляет правила в брандмауэре Windows. Правила могут быть входящими или исходящими, запрещающими обмен данными по указанным протоколам, IP-адресам и портам. У меня возникли проблемы с принятием проектного решения о том, какой из следующих вариантов мне известно:

  1. PowerShell, как описано, например, в https://technet.microsoft.com/en-us/library/jj554906(v=wps.630).aspx . Проблема с этим параметром заключается в том, что (поправьте меня, если я ошибаюсь) кажется, что он не поддерживается в Windows 7, в то время как мой инструмент должен работать в Windows 7, Windows 8 (.1) и желательно в более поздних версиях Windows. Кроме того, мне не разрешается использовать C #, в то время как PowerShell не интегрируется с C++, за исключением (возможно, я не уверен) посредством вызова процесса PowerShell, предоставления ему параметров командной строки и чтения / записи из / в его вывод / ввод потоки.
  2. "netsh advfirewall firewall". Проблема с этой опцией заключается в том, что Windows 8.1 говорит, что контекст "netsh advfirewall" устарел и может быть удален из более поздних версий Windows. Поэтому я боюсь, что этот путь сделает мой инструмент не работающим на Windows 9 или 10.
  3. COM-интерфейсы брандмауэра Windows, как в этих примерах https://msdn.microsoft.com/en-us/library/windows/desktop/dd339604(v=vs.85).aspx . Требуемое кодирование C++ не является проблемой, хотя это может занять больше времени, чем использование PowerShell или командной строки (netsh advfirewall firewall).

Какой вариант будет лучшим решением для добавления / удаления правил брандмауэра Windows? Есть ли другие варианты или преимущества / недостатки вариантов, которые я перечислил?

1 ответ1

1

Для Windows 7 способ сделать это другой

Все, что связано с брандмауэром в Server 2008/Vista / Server R2 / Windows 7, управляется через HNetCfg.FwPolicy2 COM-объект

отсюда

Если вы хотите использовать PowerShell, но вам нужно ориентироваться на обе версии ОС, я бы сказал, что написание 2-х функций будет проще всего, так как вы, похоже, уже знаете, как это сделать для Windows 8.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .