0

Win32_IP4RouteTableを使用してルート テーブルを追加したい

コード:

ManagementClass wmiclass = new ManagementClass("Win32_IP4RouteTable");
ManagementObject route = wmiclass.CreateInstance();
route["Destination"] = "145.63.20.102";
route["NextHop"] = "172.16.213.2";
route["Mask"] = "255.255.255.255";
route["Metric1"] = 20;
route.Put();//or route.Put(new PutOptions() { Type = 
PutType.UpdateOrCreate });

Put()メソッドで例外が発生します。

`System.Management.Management:Invalid parameter`

Put メソッドを使用して新しいアイテムを作成するにはどうすればよいですか

4

2 に答える 2

0

このように、@Jimiに感謝します `

    [DllImport("Iphlpapi.dll")]
    [return: MarshalAs(UnmanagedType.U4)]
    public static extern int CreateIpForwardEntry(ref MIB_IPFORWARDROW pRoute);

   public static int createIpForwardEntry(UInt32 destIPAddress, UInt32 destMask, UInt32 nextHopIPAddress, UInt32 ifIndex, int metric)
    {
        MIB_IPFORWARDROW mifr = new MIB_IPFORWARDROW();
        mifr.dwForwardDest = destIPAddress;
        mifr.dwForwardMask = destMask;
        mifr.dwForwardNextHop = nextHopIPAddress;
        mifr.dwForwardIfIndex = ifIndex;
        mifr.dwForwardPolicy = Convert.ToUInt32(0);
        mifr.dwForwardType = Convert.ToUInt32(3);
        mifr.dwForwardProto = Convert.ToUInt32(3);
        mifr.dwForwardAge = Convert.ToUInt32(0);
        mifr.dwForwardNextHopAS = Convert.ToUInt32(0);
        mifr.dwForwardMetric1 = metric;
        mifr.dwForwardMetric2 = -1;
        mifr.dwForwardMetric3 = -1;
        mifr.dwForwardMetric4 = -1;
        mifr.dwForwardMetric5 = -1;
        return CreateIpForwardEntry(ref mifr);
    }

`

于 2018-04-23T10:27:28.763 に答える
0

これにはORMiライブラリを使用できます。これは、WMI 用の軽い ORM です。

1) クラスを定義します。

[WMIClass("Win32_IP4RouteTable")]
public class RouteTable
{
    public string Destination{ get; set; }
    public string NextHop{ get; set; }
    public string Mask{ get; set; }
    public string Metric1{ get; set; }
}

注:「無効なパラメーター」が表示されるために必要なプロパティがいくつかあるようです。その場合は、必要なクラスをRouteTableクラスに追加するだけです。

2) ライブラリを使用します。

WMIHelper helper = new WMIHelper("root\\CimV2");

RouteTable route = new RouteTable
{
    Destination = "145.63.20.102",
    NextHop = "172.16.213.2",
    Mask = "255.255.255.255",
    Metric1 = "20"
};

helper.AddInstance(route);

以上です。

于 2018-06-07T19:33:36.733 に答える