Изменение конфигурации сети в C # - PullRequest
4 голосов
/ 09 февраля 2012

Я пытаюсь сделать простую программу для изменения параметров IP в C #. Я использую этот код: Как вы можете изменить настройки сети (IP-адрес, DNS, WINS, имя хоста) с кодом в C # выполнить его и сделал мой собственный метод:

public void changerip(string adresse, string NIC)
{
    ManagementObjectCollection objMOC = objMC.GetInstances();
    foreach (ManagementObject objMO in objMOC)
    {

        if (objMO["Caption"].Equals(NIC))
        {
            try
            {
                if (adresse != "0")
                {
                    ManagementBaseObject setIP;
                    ManagementBaseObject newIP =
                        objMC.GetMethodParameters("EnableStatic");

                    newIP["IPAddress"] = new string[] { "192.168." + adresse + ".50" };
                    newIP["SubnetMask"] = new string[] { "255.255.255.0" };
                    setIP = objMO.InvokeMethod("EnableStatic", newIP, null);

                    ManagementBaseObject setGateway;
                    ManagementBaseObject newGateway =
                    objMO.GetMethodParameters("SetGateways");
                    newGateway["DefaultIPGateway"] = new string[] { "192.168." + adresse + ".254" };
                    newGateway["GatewayCostMetric"] = new int[] { 1 };
                    setGateway = objMO.InvokeMethod("SetGateways", newGateway, null);

                    ManagementBaseObject newDNS =
                    objMO.GetMethodParameters("SetDNSServerSearchOrder");
                    newDNS["DNSServerSearchOrder"] = "192.168.1.24,192.168.1.2".Split(',');
                    ManagementBaseObject setDNS =
                    objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
                }
                else
                {
                    ManagementBaseObject newDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder");
                    newDNS["DNSServerSearchOrder"] = null;
                    ManagementBaseObject enableDHCP = objMO.InvokeMethod("EnableDHCP", null, null);
                    ManagementBaseObject setDNS = objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
                    //Save all Gateways into an array
                    string[] gateways = (string[])objMO["DefaultIPGateway"];

                    ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic");
                    ManagementBaseObject newGate = objMO.GetMethodParameters("SetGateways");

                    //Set last value of the array(always the Gateway recived by DHCP) as the default Gateway
                    newGate["DefaultIPGateway"] = new string[] { gateways[gateways.Length - 1] };
                    newGate["GatewayCostMetric"] = new int[] { 1 };
                }
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message);
            }
        }
    }
}

Он отлично работает в Windows XP, но не работает в Windows 7 (Starter или Pro). У меня нет ни каких исключений, ни сообщений об ошибках / безопасности от ОС.

Кто-то имеет представление о том, что случилось?

1 Ответ

4 голосов
/ 09 февраля 2012

Похоже, проблема с учетными данными для меня.Вы должны запустить программу с правами администратора.Вы можете сделать это простым щелчком правой кнопкой мыши на exe и щелкнуть «Запуск от имени администратора».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...