任何标准的 C#.NET 方法来利用 WMI IPHelper?

Any standard C#.NET way to utilize WMI IPHelper?

提问人:ProfNimrod 提问时间:2/20/2014 最后编辑:ProfNimrod 更新时间:2/23/2014 访问量:194

问:

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

C# DLL iphelper

评论

0赞 ProfNimrod 2/22/2014
这不是“推荐或查找工具、库或最喜欢的场外资源”的请求。我认为这很清楚。我想知道如何从 .NET 调用 CreateIpForwardEntry。为什么这对 SO 来说是题外话?
1赞 Jason Down 2/22/2014
我同意这不是题外话。
0赞 ProfNimrod 2/23/2014
感谢Jason的支持。当我第一次发布这个问题时,这个问题被搁置了。在重新措辞以明确表示我不是在寻找第三方图书馆的推荐之后,修改后的问题被投票决定重新开放。一旦成功重新开放,我认为 SO 不应该允许第二次搁置一个问题。

答:

3赞 ProfNimrod 2/21/2014 #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();