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

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

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

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

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

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

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы