2013-11-30 4 views
0

Я пытаюсь выполнить пакетный файл с указанным кодом нижеInvoke пакетный файл

private void buttonDisable_Click(object sender, EventArgs e) 
     { 
      System.Diagnostics.Process si = new System.Diagnostics.Process(); 
      si.StartInfo.FileName = "Q:\\disable.bat"; 
      si.Start();   
     } 

Но он просто приходит с этой ошибкой:

Необработанное исключение типа «System. ComponentModel.Win32Exception» произошло в System.dll

Дополнительная информация: система не может найти указанный файл

файл существует в месте

+1

делает q: \\ является сетевым диском –

+2

У вас есть разрешение на доступ к этому каталогу? – Steve

+0

Q Привод - это локальный диск, а не сетевой диск. И у меня есть разрешение на доступ к каталогу. –

ответ

0

Вероятное объяснение этой проблемы заключается в том, что пользовательский контекст, который выполняет код, не имеет добротность диск отображается. Таким образом, другими словами, вы можете видеть файл, но исполняемый код не может. Возможно, это работает под ASP.net, например.

Другим правдоподобным объяснением является просто то, что файл не существует.

+0

Я выполняю это на своей локальной машине, где диск q установлен на –

+1

Кажется, что в контексте исполняемого кода этот файл не существует. –

0

это нормально, потому что .bat это не процесс

System.Diagnostics.Process.Start("cmd.exe", @"/c Q:\disable.bat") 

могли бы вы попробовать эту ссылку

http://www.codeproject.com/Articles/90143/Mapping-Network-Drive-using-C

, если вы можете заставить отображение дисков, я думаю, вы будете иметь возможность доступа привод

+0

№ Значение по умолчанию для 'UseShellExecute' равно' true', поэтому ассоциация оболочки для .bat делает все остальное. И даже тогда, когда 'UseShellExecute' как' false', 'Start()' умеет нормально его запускать –

+0

, но вы соглашаетесь с тем, что 'UseShellExecute' не был установлен –

+0

По умолчанию используется значение 'true'. Но это работает в любом случае. Попробуйте это посмотреть. –

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