任何使用 WMI IPHelper 的标准 C#.NET 方式?

Posted

技术标签:

【中文标题】任何使用 WMI IPHelper 的标准 C#.NET 方式?【英文标题】:Any standard C#.NET way to utilize WMI IPHelper? 【发布时间】:2014-02-19 17:59:53 【问题描述】:

有谁知道是否存在包含等效 WMI IPHelper 函数的现有 C#.NET 命名空间?具体来说,我需要调用 CreateIpForwardEntry 和 DeleteIpForwardEntry。是通过 P/Invoke 的唯一方法吗? (注意:这不是对第三方库的请求,而是对标准 .NET 库的请求)

【问题讨论】:

这不是“推荐或查找工具、库或喜爱的场外资源”的请求。我认为这很清楚。我想知道如何从 .NET 调用 CreateIpForwardEntry。为什么这与 SO 无关? 我同意这不是题外话。 感谢杰森的支持。当我第一次发布这个问题时,这个问题被搁置了。在重新措辞以明确表示我不是在寻找第三方图书馆的推荐之后,修改后的问题被投票重新开放。一旦成功重新打开,我认为 SO 不应允许第二次搁置问题。 【参考方案1】:

最后,我决定不再尝试 P/Invoke WMI IPHelper 函数。启动一个打开 cmd.exe 的进程并编写控制台命令来添加和删除路由要容易得多。下面的代码说明了如何做到这一点。

var proc = new Process

    StartInfo = new ProcessStartInfo
    
        FileName = "cmd.exe",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardInput = true,
        CreateNoWindow = true
    
;

proc.Start();
proc.StandardInput.WriteLine(delete
    ? "route delete " + ServiceIpAddress + " mask " + GatewayMask + " " + GatewayIpAddress + " -p" : "route add " + ServiceIpAddress + " mask " + GatewayMask + " " +  GatewayIpAddress + " -p");
roc.Close();

【讨论】:

以上是关于任何使用 WMI IPHelper 的标准 C#.NET 方式?的主要内容,如果未能解决你的问题,请参考以下文章

vbscript WMI:将WMI日期转换为标准日期和时间

WMI参数介绍

转载 WMI方式:windows系统接入

使用 WMI 拉回远程 netstat 数据

电脑出现WMI效能适配器是怎么回事

C# WMI、性能计数器和 SNMP 哦,天哪!