用C#以编程方式改变ipsec规则的方法?
我知道如何执行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)相关:使用FirewallAPI,INetFwRule接口以及可能需要的任何其他内容在Vista或更高版本上进行编程防火墙更改。
在Vista或更高版本中,如果您需要ipsecfunction但不关心旧版PolicyAgent实现,则使用FirewallAPI.dll是一个简单的选择。
我一开始并没有意识到这是一个选项,因为我不知道Vista中的高级防火墙以及后来在WFP(Windows过滤平台)中真正结合了IPSec和防火墙,并使传统的IPSec实施通过PolicyAgent。
这意味着使用FirewallAPI.dll可以赋予IPSec的所有function以及防火墙的状态智能,这正是我想要的。 我只是添加黑名单规则(因为黑名单规则优先),并在需要时通过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)将策略写入注册表
我的猜测是命令行工具就是这样:它们将值写入注册表。
我已经进入它一段时间了,我没有找到托管代码解决方案。 太糟糕了,以前的Windows版本中没有WFP API。