2015-05-04 2 views
0

У меня есть exe, который я бы хотел использовать, выполнив его с параметрами командной строки.Запуск exe с параметрами командной строки

 var query = Path.Combine(path, calculator.ExeName + ".exe"); 
     var p = new Process(); 
     p.StartInfo.FileName = query; 
     //the command line parameter that causes the exe to start in an invisible mode 
     p.StartInfo.Arguments = "episrc" 
     p.Start(); 

Этот код работает, и он начинает ех, но есть одна проблемы: ех должен писать на файл в каталоге, но этого не происходит. Процесс успешно завершается (Exitcode0). Что может быть причиной этой проблемы? У меня есть код Delphi, который успешно выполняет exe, а exe записывает в файл, но использует ExecProcess из win32 API, поэтому exe действительно и работает.

Также, если я попытаюсь выполнить его из командной строки, так: kowwinnt.exe episrc он успешно записывает файл.

+0

ли исполняемый файл, возможно, записи в каталог вызывающего исполняемого файла? – Codor

+0

Возможно, это вопрос разрешения файлов/каталогов. Попробуйте запустить процесс как администратор: p.StartInfo.Verb = «runas» – Arie

+2

Имеет ли процесс, порождающий этот процесс, достаточные права на запись в указанный каталог? Ваш родительский процесс может порождать дочерний процесс с теми же правами. Если ваш родитель не имеет прав на запись в каталог, он не сможет завершить свое письменное задание (и, вероятно, вы будете обрабатывать любые исключения, но это просто предположение, поскольку в этой части нет фактического кода в этой части вопрос) – aevitas

ответ

1

Вы должны установить Working Directory.

Ваш код будет выглядеть следующим образом:

var query = Path.Combine(path, calculator.ExeName + ".exe"); 
    var p = new Process(); 
    p.StartInfo.FileName = query; 
    p.StartInfo.WorkingDirectory = path; 
    //the command line parameter that causes the exe to start in an invisible mode 
    p.StartInfo.Arguments = "episrc" 
    p.Start(); 
+0

Это именно то, что я искал. Я совершенно не знал, что я должен установить рабочий каталог явно! Этот вопрос убивал меня последние 2 дня! Благодаря !! –

+0

Без проблем, рад, что смогу помочь –