Я пытаюсь выполнить эту команду CMD для изменения моего DNS, но он не работает. У меня нет ошибок. Он просит запустить администратор, но он не работает.Выполнение CMD с аргументами не работает
Если я вручную вводим аргументы в CMD, это действительно работает.
Вот мой код:
System.Diagnostics.ProcessStartInfo myProcessInfo = new System.Diagnostics.ProcessStartInfo();
myProcessInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%") + @"\System32\cmd.exe";
myProcessInfo.Arguments = "set DNS1=198.168.97.1 " +
"set DNS2=5.2.2.2 " +
"set DNS3=206.19.29.17 " +
"set INTERFACE=Ethernet " +
"netsh int ipv4 set dns name='%INTERFACE%' static %DNS1% primary validate=no " +
"netsh int ipv4 add dns name='%INTERFACE%' %DNS2% index=2 " +
"netsh int ipv4 add dns name='%INTERFACE%' %DNS3% index=3" +
"ipconfig /flushdns";
myProcessInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
myProcessInfo.Verb = "runas";
System.Diagnostics.Process.Start(myProcessInfo);
Это три отдельные команды для выполнения один за другим (или поместить в пакетный файл и запустить его), и вы не Не нужно ничего устанавливать, потому что вы можете ввести значение set = непосредственно внутри netsh. Также, когда вы запускаете процессор CMD.EXE, вы всегда должны добавлять параметр/K или/C перед своими аргументами. – Steve
Вы можете попробовать использовать '' && '' для разделения команд. Обратите внимание, что несколько команд, разделенных разделителем команд '' && '', принимаются для строки, если они окружены кавычками. – Darek
@ Дарек, вы думаете, что это сработает? –