使用c#工具设置IP

使用c#工具设置IP,c#,dynamic,ip,C#,Dynamic,Ip,我是一名c#新手,想学习更多编程知识。因此,我从一个简单的工具开始,它可以将choosen网络适配器的地址设置为静态或动态(如Windows TCP/IP属性。我将该工具的设计设置为与TCP/IP属性完全相同)。 为网络适配器设置静态IP地址效果很好。 但是,当我将计算机从网络上断开连接,然后将网络适配器的IP设置为动态(自动获取IP地址)时,它不会将Windows IP属性设置为动态。我完全不知道如何解决这个问题。 我知道,只有当我连接到网络(路由器或DHCP服务器已启用)时,我才会自动获得I

我是一名c#新手,想学习更多编程知识。因此,我从一个简单的工具开始,它可以将choosen网络适配器的地址设置为静态或动态(如Windows TCP/IP属性。我将该工具的设计设置为与TCP/IP属性完全相同)。 为网络适配器设置静态IP地址效果很好。 但是,当我将计算机从网络上断开连接,然后将网络适配器的IP设置为动态(自动获取IP地址)时,它不会将Windows IP属性设置为动态。我完全不知道如何解决这个问题。 我知道,只有当我连接到网络(路由器或DHCP服务器已启用)时,我才会自动获得IP地址。 但当我断开计算机和网络的连接时,我用Windows TCP/IP属性将IP属性设置为动态,它工作得很好

非常感谢你的帮助

下面是我正在使用的代码:

    public void setDHCPMode()
    {
        ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection moc = mc.GetInstances();

        foreach (ManagementObject mo in moc)
        {
            if (!(bool)mo["ipEnabled"])
                continue;

            try
            {
                string desc = (string)(mo["Description"]);

                if (desc == NICcomboBox.Text)
                {
                    ManagementBaseObject newDNS = mo.GetMethodParameters("SetDNSServerSearchOrder");
                    newDNS["DNSServerSearchOrder"] = null;
                    ManagementBaseObject enableDHCP = mo.InvokeMethod("EnableDHCP", null, null);
                    ManagementBaseObject setDNS = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
                }

                toolStripStatusLabel1.Text = "DHCP set";
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to set DHCP : " + ex.Message);
            }
        }
    }

我发现了问题。WMI似乎无法正常工作。无法将TCP/IP属性设置为DHCP,同时拔下特定NIC的电缆


我通过在注册表中设置DHCP模式解决了这个问题。现在它工作得很好。

如果您想了解更多编程知识,我建议您尝试一些可以教您更多编程知识而少学一些Windows管理类知识的方法。