2

Windows での IPv6 の設定に問題があります。
以下のコードは IPv4 アドレスを設定できますが、IPv6 を設定しようとすることはできません。
私を助けてください。

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
try
{

    ManagementObjectCollection moc = mc.GetInstances();

    foreach (ManagementObject mo in moc)
    {
        // Make sure this is a IP enabled device. Not something like memory card or VM Ware
        if ((bool)mo["IPEnabled"])
        {
            if (mo["Caption"].Equals(nicName))
            {
                ManagementBaseObject newIP = mo.GetMethodParameters("EnableStatic");
                ManagementBaseObject newGate = mo.GetMethodParameters("SetGateways");
                ManagementBaseObject newDNS = mo.GetMethodParameters("SetDNSServerSearchOrder");

                newGate["DefaultIPGateway"] = new string[] { Gateway };
                newGate["GatewayCostMetric"] = new int[] { 1 };

                newIP["IPAddress"] = IpAddresses.Split(',');
                newIP["SubnetMask"] = new string[] { SubnetMask };

                newDNS["DNSServerSearchOrder"] = DnsSearchOrder.Split(',');

                ManagementBaseObject setIP = mo.InvokeMethod("EnableStatic", newIP, null);
                ManagementBaseObject setGateways = mo.InvokeMethod("SetGateways", newGate, null);
                ManagementBaseObject setDNS = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);

                break;
            }
        }
    }
}
catch (Exception ex)
{
    string str = ex.Message;

}
4

1 に答える 1

1

また、WMI 経由で固定 IPv6 アドレスを設定しようとしましたが、機能していないようです (IPv4 アドレスは機能します)。
これを行う唯一の方法は、コード内から netsh を開始し、それを使用して固定 (静的) IPv6 アドレスを設定することです。誰かがよりエレガントなソリューションを持っている場合は、喜んでそれを使用します。その間:

.NET System.Diagnostics.Process クラスを使用して、netsh プロセスを開始します。

必要なパラメーターを示す netsh コマンド リファレンスは、こちらにあります。

送信したコマンドごとに、新しい netsh プロセスを開始する必要があることがわかりました。
netsh プロセスごとに、プロセスの OutputDataReceived イベントのハンドラーを作成し、netsh フィードバックをログに記録しました。

于 2012-10-14T10:45:55.080 に答える