2013-04-18 2 views
0

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

 Process p = new Process(); 

     string command1 = "/s " + path + "\\script1.script"; 

     p.StartInfo = new ProcessStartInfo("diskpart",command1) 

     { 

      UseShellExecute = true, 

      CreateNoWindow = false, 

      Verb="runas" 

     }; 

     p.Start(); 

     p.WaitForExit(); 

Это работает. Он вызывает DiskPart со сценарием, который просто делает list volume. Я хочу записать вывод из этого в outfile1.txt. Когда я запускаю следующую команду с терминала, он работает: diskpart /s script1.script>outfile1.txt Однако, когда я изменяю command1, чтобы быть "/s " + path + "\\script1.script>+path+"\\outfile1.txt" Я получаю сообщение об ошибке от DiskPart, что он не смог открыть или прочитать мой файл. Что я делаю неправильно?

EDIT

Не нашли решение, но я нашел обходной путь.

Я пытался получить букву диска USB-накопителя, которую я тогда хотел установить как только для чтения. Однако, используя DriveInfo.Name, я смог его получить. (Было бы более полезно, если бы это было вызвано DriveInfo.driveLetter) Затем я написал свой сценарий DiskPart соответственно.

ответ

0

Не нашел решение, но я нашел обходной путь.

Я пытался получить букву диска USB-накопителя, которую я тогда хотел установить как только для чтения. Однако, используя DriveInfo.Nam e, я смог его получить. (Было бы более полезно, если бы это было вызвано DriveInfo.driveLetter) Затем я написал свой сценарий DiskPart соответственно.

0

У вас может быть синтаксическая ошибка в вашей команде1. Вы сказали, что вы изменили его:

"/ s" + путь + "\ script1.script> + путь +" \ outfile1.txt»

, и я думаю, что вы хотите (отсутствует один двойная кавычка):

"/ s" + путь + "\ script1.script>" + путь + "\ outfile1.txt"

Если это не так, то, что происходит, когда вы используйте команду терминала - "diskpart/s script1.script> outfile1.txt" - как command1? Вы можете посмотреть на этой другое StackOverflow тему для запуска команд в C#:

Run Command Prompt Commands

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