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