c# - 使用 C# 以编程方式更改 ipsec 规则的方法?

标签 c# wmi ipsec

我知道如何执行 IPsec 更改的唯一方法是调用 netsh 来进行更改。有没有直接使用 System.Management 和 WMI 对象的方法?如果是这样,那是什么?我很难通过 MSDN 找到相关的 WMI 信息。

或者有人使用过其他有用的方法吗?

编辑:我正在使用 C# 工作,并且更喜欢关于基于 .NET System.Management 的答案的 C# 示例。

谢谢!

最佳答案

1) 准确:WMI。

EnableIPFilterSec WMI 类静态方法可以跨所有 IP 绑定(bind)的网络适配器全局启用 IP 安全。启用安全性后,可以使用 EnableIPSec WMI 类方法更改任何特定适配器的安全特性。前者的 MSDN 在这里:

http://msdn.microsoft.com/en-us/library/aa390381%28VS.85%29.aspx

有关 EnableIPSec 及其参数(允许您声明端口和协议(protocol)列表)的信息,请参阅此 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 接口(interface)以及其他可能需要的任何内容在 Vista 或更高版本上进行编程防火墙更改。

在 Vista 或更高版本上,如果您需要 ipsec 功能但不关心旧的 PolicyAgent 实现,那么使用 FirewallAPI.dll 是一个简单的选择。

我一开始并没有意识到这是一个选项,因为我不知道 Vista 中的高级防火墙以及后来的 WFP(Windows 过滤平台)中真正结合了 IPSec 和防火墙,并让旧版 IPSec 实现通过 PolicyAgent 进行。

这意味着使用FirewallAPI.dll可以提供IPSec的所有功能以及防火墙的状态智能,这正是我想要的。我只是添加黑名单规则(因为黑名单规则优先),并在需要时通过 API 添加到黑名单,WFP 开始丢弃流量。完成!

关于c# - 使用 C# 以编程方式更改 ipsec 规则的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1609882/

相关文章:

python - Python 中的共享文件夹 session

c# - 使用 C# 在 Windows Server 上添加和删除 IPSec 策略有哪些选项?

Linux ubuntu 中具有 ipsec Strongswan 的 Azure 虚拟网关需要子 sa 的提案匹配

c# - SmtpClient 邮件发送超时

c# - 如何处理类之间的公共(public)数据?

windows - 如何注册为 NT 内核事件的实时 ETW 使用者?

networking - 将 L2TP 与 IPSec 一起使用有什么意义?

c# - 如何在不丢失其特定属性的情况下将子实例反序列化为父对象?

c# - 点在 3D 线上的投影

c# - System.Diagnostic 是否通过查询 WMI 或其他方式获取其数据?