1) Точно: WMI.
Статический метод класса WIP EnableIPFilterSec может активировать IP-безопасность глобально для всех сетевых IP-адаптеров. При включенной защите характеристики безопасности для любого конкретного адаптера можно изменить с помощью метода класса WIP EnableIPSec. MSDN для первого здесь:
http://msdn.microsoft.com/en-us/library/aa390381%28VS.85%29.aspx
И посмотрите эту запись MSDN для получения информации о EnableIPSec и его параметрах (которые позволяют вам объявить список портов и протоколов):
http://msdn.microsoft.com/en-us/library/aa390382%28VS.85%29.aspx
Наконец, это ссылка на каталог кода WMI.NET, где есть полезные примеры кода, использующие System.Management для выполнения запросов WQL.
http://msdn.microsoft.com/en-us/library/ms257338.aspx
Примечание:
Если вам нужно много возиться с WQL-тестами для ваших объектов ObjectQuery / SelectQuery System.Management, как я и сделал, попробуйте wbemtest. Это тестер инструментария управления Windows, который делает написание, тестирование и оттачивание WQL для ваших приложений намного приятнее.
2) Связанные: программные изменения брандмауэра в Vista или более поздней версии с использованием FirewallAPI, интерфейса INetFwRule и всего, что может понадобиться.
В Vista или более поздних версиях использование FirewallAPI.dll - это простой вариант, если вам нужна функциональность ipsec, но вам не нужна устаревшая реализация PolicyAgent.
Сначала я не осознавал, что это вариант, потому что я не знал, что Advanced Firewall в Vista и более поздних версиях действительно объединяет IPSec и межсетевой экран в WFP (платформе фильтрации Windows) и поддерживает устаревшие реализации IPSec через PolicyAgent. 1026 *
Это означает, что использование FirewallAPI.dll может дать все функциональные возможности IPSec с интеллектуальным состоянием брандмауэра, а это именно то, что я хотел. Я просто добавляю правила черного списка (поскольку правила черного списка имеют приоритет) и добавляю в черный список, когда это необходимо, через API, и WFP начинает отбрасывать трафик. Готово!