0

ローカル ワークステーションの IP アドレスを設定できるコードをたくさん見てきましたが、ワークステーションが既に静的 IP アドレスを持っている場合にのみ機能します。アダプターの設定を、IP アドレスを自動的に取得するものから、私が割り当てた静的 IP を使用するものに変更する必要があります。

私が今使っているコードは以下です。すべての objMO の最初の if ステートメントで失敗します。少なくとも 1 つのアダプターで IPv4 が有効になっていることはわかっています (ネットワークと共有センターで確認できます) が、前述のように、IP アドレスを自動的に取得するように設定されています。

protected static void ChangeIPAndSubnet( IPAddress ipToSet, IPAddress subnetToSet )
{
    ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection objMOC = objMC.GetInstances();

    // change the IP for all active ManagementObjects
    foreach (ManagementObject objMO in objMOC)
    {
        if ((bool)objMO["IPEnabled"])
        {
            try
            {
                ManagementBaseObject setIP;
                ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic");

                // it's too bad that we have nice, neat ip addresses to use, only to change them
                // back to strings, but that's how this code works
                string ip_address = ipToSet.ToString();
                string subnet_mask = subnetToSet.ToString();

                newIP["IPAddress"] = new string[] { ip_address };
                newIP["SubnetMask"] = new string[] { subnet_mask };

                setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
            }
            catch (Exception)
            {
                // report error
                string strError = "The IP Address and/or Subnet mask could not be changed.\n";
                strError += "Please check the values and try again";
                MessageBox.Show(strError, "Settings Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

指定した IP アドレス (およびサブネット マスク) を使用するようにアダプターの設定を変更するにはどうすればよいですか?

4

0 に答える 0