Изменение сетевых настроек на удаленной машине через netsh - C#

Узнай цену своей работы

Формулировка задачи:

Задача: поменять настройки сети на удаленной машине. Логин и пароль к ней имеются. В коде C# через netsh на локальном машине меняется, на удаленной не получается. Через командную строку получается менять и на локальной и на удаленной машине. код в C#:
            Process p = new Process();
            p.StartInfo.FileName = "netsh.exe";
            
            StringBuilder parameters = new StringBuilder();
            parameters.Append("-r 199.99.9.99 -u admin -p admin");
 
            if (dhcp_radioButton.Checked == true)
            {
                parameters.Append(" interface ip set address name=\"").Append(name_network_textBox.Text);
                parameters.Append("\" dhcp");
            }
            else
            {
                parameters.Append(" interface ip add address name=\"").Append(name_network_textBox.Text);
                parameters.Append("\" addr=").Append(newIP_textBox.Text);
                parameters.Append(" mask=").Append(mask_textBox.Text);
                parameters.Append(" gateway=").Append(gateway_textBox.Text);
                parameters.Append(" gwmetric=").Append("1");
            }
 
            p.StartInfo.Arguments = parameters.ToString();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.RedirectStandardOutput = true;
       
           p.Start();
Если исключить эту строчку, то на локальной машине все работает
            parameters.Append("-r 199.99.9.99 -u admin -p admin");
Но надо на удаленной, у кого есть работающий исходник? Или может кто знает другой способ? В другой теме Изменить в настройках сети протокол интернета (TCP/IP) предлагают такой способ изменить настройки сети, но как сделать это на удаленной машине? Отрывок кода:
 /// <summary>
        /// Set's a new Gateway address of the local machine
        /// </summary>
        /// <param name="gateway">The Gateway IP Address</param>
        /// <remarks>Requires a reference to the System.Management namespace</remarks>
        public static void SetGateway(string gateway) {
            ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection objMOC = objMC.GetInstances();
 
            foreach (ManagementObject objMO in objMOC) {
                if ((bool)objMO["IPEnabled"]) {
                    try {
                        ManagementBaseObject setGateway;
                        ManagementBaseObject newGateway =
                            objMO.GetMethodParameters("SetGateways");
 
                        newGateway["DefaultIPGateway"] = new string[] { gateway };
                        newGateway["GatewayCostMetric"] = new int[] { 1 };
 
                        setGateway = objMO.InvokeMethod("SetGateways", newGateway, null);
                    } catch (Exception) {
                        throw;
                    }
                }
            }
        }

Решение задачи: «Изменение сетевых настроек на удаленной машине через netsh»

textual
Листинг программы
            Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            
            StringBuilder parameters = new StringBuilder();
            parameters.Append(" netsh -r 199.99.9.99 -u admin -p admin");
            parameters.Append(" interface ip set address name=local dhcp");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы