1) 准确:WMI。
EnableIPFilterSec WMI 类静态方法可以跨所有 IP 绑定的网络适配器全局启用 IP 安全。启用安全性后,可以使用 EnableIPSec WMI 类方法更改任何特定适配器的安全特性。前者的 MSDN 在这里:
http://msdn.microsoft.com/en-us/library/aa390381%28VS.85%29.aspx
有关 EnableIPSec 及其参数(允许您声明端口和协议列表)的信息,请参阅此 MSDN 条目:
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
NOTE:
如果您像我一样需要对 ObjectQuery/SelectQuery System.Management 对象进行广泛的 WQL 测试,请尝试一下 wbemtest。它是 Windows Management Instrumentation 测试器,使您的应用程序的编写、测试和磨练 WQL 变得更加顺利。
2) 相关:Vista 或更高版本上使用 FirewallAPI、INetFwRule 接口以及可能需要的任何其他内容进行编程防火墙更改。
在 Vista 或更高版本上,如果您需要 ipsec 功能但不关心旧的 PolicyAgent 实现,那么使用 FirewallAPI.dll 是一个简单的选择。
我一开始并没有意识到这是一个选项,因为我不知道 Vista 和后来的高级防火墙真正将 IPSec 和 WFP(Windows 过滤平台)内的防火墙结合起来,并使旧的 IPSec 实现通过 PolicyAgent 进行。
这意味着使用 FirewallAPI.dll 可以提供 IPSec 的所有功能以及防火墙的状态智能,这正是我想要的。我只是添加黑名单规则(因为黑名单规则优先),并在需要时通过 API 添加到黑名单,WFP 开始丢弃流量。完毕!