Запуск файла с помощью Process.Start работает, но добавление условий не работает.

Итак, я пытаюсь запустить скрипт принтера, используя cscript из С#, и cscript запускает базовый визуальный файл. Так что своего рода гирляндная цепочка (и я хочу сохранить эту гирляндную цепочку нетронутой по определенным причинам).

Вот код:

Process.Start("c:/windows/system32/cscript.exe c:/windows/System32/Printing_Admin_Scripts/en-US/prnport.vbs");

Теперь, когда я запускаю ТОЛЬКО cscript, проблем нет.

Однако, когда я добавляю условие prnport.vbs к запуску cscript, я получаю эту ошибку в Visual Studio:

"The system cannot find the file specified"

Но я могу подтвердить, что путь к файлу правильный - prnport.vbs существует в /en-US.

Так что я делаю неправильно здесь? Можете ли вы не передавать аргументы (и в этом случае путь к файлу передается в качестве аргумента в cscript.exe) при использовании Process.Start?

Новичок в С# и не понимает, как правильно это сделать.


person Steven Matthews    schedule 07.11.2012    source источник


Ответы (3)


Вы должны указать аргументы отдельно от файла для запуска. Попробуйте Process.Start(string, string) перегрузку:

Process.Start("c:/windows/system32/cscript.exe", 
    "c:/windows/System32/Printing_Admin_Scripts/en-US/prnport.vbs");
person lc.    schedule 07.11.2012
comment
Именно это. Поскольку у вас есть оба файла в первом параметре, вся эта строка в кавычках рассматривается как один аргумент файла — вы должны помнить, что имена файлов могут содержать пробелы. - person Drake Clarris; 07.11.2012
comment
Если это выполняется в Windows Vista или более поздних версиях, будет ли перенаправление файловой системы проблемой? Я спрашиваю только потому, что скрипт находится в \windows\system32. - person Chris Dunaway; 07.11.2012
comment
@ChrisDunaway Настоящая проблема будет заключаться в запуске 32-битного процесса из 64-битной ОС, и в этом случае вам нужно посмотреть stackoverflow.com/questions/8585873/ - person lc.; 07.11.2012

Это аргумент, вам нужно использовать другую перегрузку Process.Start

Взгляните на документация по методу.

Process.Start (String, String) подойдет, другие возможны и предлагают больше гибкости, если вам это тоже нужно.

person Mene    schedule 07.11.2012

Process.Start ожидает имя файла в качестве первого параметра. Аргументы приведены в отдельном аргументе.

person Knaģis    schedule 07.11.2012