WMI Установить статический и динамический - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть приложение, которое должно позволять пользователю указывать режим распределения адресов (статический / dhcp) для одного из двух сетевых адаптеров.Одна карта используется для связи с SOM и всегда будет иметь статический IP-адрес 192.168.0.2, а другая - для внешнего подключения (целевой NIC).Мой код компилируется и выполняется без исключения.Я использую условное выражение для поиска карты для внешнего соединения, основываясь на том факте, что мое внутреннее соединение всегда живет по адресу 192.168.0.2 (учтено в примере).Он работает, но настройки сети в Windows не отражают изменения.Может кто-нибудь сказать мне, почему мой код на самом деле ничего не делает?

 //Sets static IP
    public static void SetStaticIP(string ip, string newIP, string subnet = "255.255.255.0")
    {
        ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection objMOC = objMC.GetInstances();

        foreach (ManagementObject objMO in objMOC)
        {
            if ((bool)objMO["IPEnabled"])
            {
                try
                {
                    object x = objMO["IPAddress"];
                    string[] str = (string[])x;
                    if (str[0] == ip)
                    {
                        ManagementBaseObject objNewIP = null;
                        ManagementBaseObject objSetIP = null;
                        objNewIP = objMO.GetMethodParameters("EnableStatic");

                        objNewIP["IPAddress"] = new string[] {newIP};
                        objSetIP = objMO.InvokeMethod("EnableStatic", objNewIP, null);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Unable to Set IP : " + ex.Message);
                }

            }
        }
    }

    //sets allocation to DHCP
    public static bool setDHCP(string oldIP)
    {
        ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection objMOC = objMC.GetInstances();

        foreach (ManagementObject objMO in objMOC)
        {
            if (!(bool)objMO["IPEnabled"])
            {
                object x = objMO["IPAddress"];
                string[] str = (string[])x;
                if (str[0] == oldIP)
                {
                    try
                    {
                        ManagementBaseObject objNewDNS = null;
                        ManagementBaseObject objSetDNS = objMO.GetMethodParameters("EnableDHCP");

                        objNewDNS = objMO.InvokeMethod("EnableDHCP", null, null);

                        return true;
                    }
                    catch (Exception) { return false; }
                }
            }
        }
        return false;
    }
...