我知道如何执行 IPsec 更改的唯一方法是调用 netsh 进行更改。有没有直接使用 System.Management 和 WMI 对象的方法?如果是这样,它是什么?我很难通过 MSDN 找到相关的 WMI 信息。
还是有人使用过其他有用的方法?
编辑:我在 C# 中工作,并且更喜欢关于 .NET System.Management 答案的 C# 示例。
谢谢!
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
笔记:
如果您需要像我一样对您的 ObjectQuery/SelectQuery System.Management 对象进行广泛的 WQL 测试,请尝试使用 wbemtest。它是 Windows Management Instrumentation 测试器,可以更好地为您的应用程序编写、测试和磨练 WQL。
2) 相关:在 Vista 或更高版本上使用 FirewallAPI、INetFwRule 接口和其他任何可能需要的东西进行编程防火墙更改。
在 Vista 或更高版本上,如果您需要 ipsec 功能但不关心旧的 PolicyAgent 实现,则使用 FirewallAPI.dll 是一个简单的选择。
起初我没有意识到这是一个选项,因为我不知道 Vista 和后来的高级防火墙真正结合了 IPSec 和 WFP(Windows 过滤平台)中的防火墙,并通过 PolicyAgent 保持传统的 IPSec 实现。
这意味着使用 FirewallAPI.dll 可以提供 IPSec 的所有功能以及防火墙的状态智能,这正是我想要的。我只是添加黑名单规则(因为黑名单规则优先),并在需要时通过 API 添加到黑名单,WFP 开始丢弃流量。完毕!
在 IIS 7 中,IP 限制可以直接从配置文件中进行操作,而不会弄乱元数据库。为了便于维护,可以使用 configSource 拆分配置文件,以便将 IPSecure 部分保存到它自己的文件中。
全文:
http ://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html
你不能用 WMI 做到这一点。WMI 仅限于 TCP 过滤,这意味着阻塞端口。而已。
如果您使用的是以前的 Windows 版本,您可以:
a) 使用命令行工具,在本例中为 ipseccmd.exe 或 ipsecpol.exe (W2K),或 netsh
或者
b) 将策略写入注册表
我的猜测是命令行工具就是这样做的:它们将值写入注册表。
我已经有一段时间了,但我没有找到托管代码解决方案。太糟糕了,WFP API 在以前的 Windows 版本中不可用。