2015-08-27 4 views
0

У меня был небольшой инструмент, созданный на VB.net, для включения/отключения моего Ethernet.C# Выполнить команду в CMD.exe с помощью кнопки

Прямо сейчас я пытаюсь воссоздать его на C#, но я не могу понять, как заставить команду работать.

Ошибка приведено неправильное. Возможно, извините, что я не знаю C#.

private void btnDisabled_Click(object sender, EventArgs e) 
{ 
    Process.Start("CMD", "netsh interface set interface "Ethernet" DISABLED"); 
} 

Предполагаемый ввод интерфейса интерфейса интерфейса netsh «Ethernet» DISABLED в командной строке.

У меня явно неправильный код, но я не знаю, как это должно быть.

У кого-нибудь есть совет?

Thanks

+1

Прежде всего, вы должны избегать '' '' '' '' '' '' '' '' '' '' '' '' \ '", то дайте нам ошибку :) –

+0

Если я добавлю escape, он не даст никаких ошибок. Но он просто открывается командной строки, но не посылает команду – Sevy

+0

ProcessStartInfo Информация = новый ProcessStartInfo ("cmd.exe");. info.Arguments = "/ K Netsh набор интерфейс интерфейс/Ethernet ОТКЛ"; Process.Start (информация); Пробовал это, но тот же результат не вводит команду. – Sevy

ответ

2

Вы можете проверить это.

ВКЛЮЧИТЬ

static void Enable(string interfaceName) 
{ 
System.Diagnostics.ProcessStartInfo psi = 
     new System.Diagnostics.ProcessStartInfo("netsh", String.Format("interface set interface {0} enable", interfaceName)); 
    System.Diagnostics.Process p = new System.Diagnostics.Process(); 
    p.StartInfo = psi; 
    p.Start(); 
} 

ОТКЛЮЧИТЬ

static void Disable(string interfaceName) 
{ 
    System.Diagnostics.ProcessStartInfo psi = 
     new System.Diagnostics.ProcessStartInfo("netsh", String.Format("interface set interface {0} disable", interfaceName)); 
    System.Diagnostics.Process p = new System.Diagnostics.Process(); 
    p.StartInfo = psi; 
    p.Start(); 
} 

В одном методе.

static void SetInterface(string interfaceName, bool enable) 
    { 
     string type; 
     if (enable == true) type = "enable"; 
     else type = "disable"; 

     System.Diagnostics.ProcessStartInfo psi = 
      new System.Diagnostics.ProcessStartInfo("netsh", String.Format("interface set interface {0} {1}", interfaceName, type)); 
     System.Diagnostics.Process p = new System.Diagnostics.Process(); 
     p.StartInfo = psi; 
     p.Start(); 
    } 
+0

Правильно, этот ответ показывает много дублирования кода. Лучше предоставить один метод с логическим параметром, указывающим, начинать или останавливать. –

0

Вы не указали ошибку, которую он выводит, но, прочитав выше, похоже, что вы помещаете «Ethernet», избегая вашей строки и он пытается получить доступ к объекту Ethernet, скорее отправляясь в командную строку. Если вы хотите передать знак кавычки в строку, вы можете поместить \ "вместо".

Смежные вопросы