2015-10-20 1 views
2

У меня есть одно приложение на базе Windows, которое вызывает один внешний файл scan.exe для сканирования одного каталога.C# процесс запуска несколько раз

Ниже кодов я делаю процесс вызова:.

Process p = new Process(); 
p.StartInfo.FileName = @"Scan.exe"; 
foreach (FileInfo file in fileList) 
{ 
    p.StartInfo.Arguments = @" /ALL /ARCHIVE " + file.FullName; 
    p.Start(); 
    //System.Threading.Thread.Sleep(200); 
} 

Когда я запускаю его, Scan.exe файл выскакивает (с UAC окон) с каждым именем файла передается в Предположительно, в списке, есть шесть файлов, scan.exe появляется 6 раз.

Есть ли способ открыть один процесс и повторно использовать его в цикле for?

Благодаря

+0

Что произойдет, если вы запустите свой процесс как администратор? Вы можете запросить это в своем заявлении заранее, если оно работает. – SimpleVar

+0

У вас есть источник для Scan.exe, или это программное обеспечение третьей части? –

+0

Я запускаю этот процесс как Admin (scan.exe). Приложение работает, но оно вызывает столько раз, сколько файлов в списке. Моя точка использует ТОЛЬКО один процесс (scan.exe) и просматривает список файлов, а не каждый процесс для каждого файла. Спасибо за помощь. – JPL

ответ

1

Если вы не хотите быть запрошен каждый файл программы работает ваш код должен быть администратором. Вы можете сделать свою программу автоматически запрашивать администратор by adding a manifest file и установку requestedExecutionLevel тега в

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
+0

Thanks @Scott. Однако из-за характера приложения приложение должно запускаться на основе роли пользователя. Мы в порядке с появлением UAC. Мой главный вопрос заключается в том, как использовать один процесс scan.exe для перемещения по списку файлов, а не для каждого процесса для одного файла. Спасибо – JPL

+1

@JPL Это вопрос, специфичный для McAfee 'Scan.exe', а не что-то особенное для C# или' Process.Start'. Пойдите, прочитайте документацию или попросите более подходящий сайт, например, http: \\ SuperUser.com. Если вы все-таки попросите, уберите все вещи C#, просто спросите, как это сделать из командной строки. –

+0

Ваша мысль хорошо взята. Теперь просто откройте файл McAfee scan.exe. Мой пример теперь для файла calculator.exe. Когда я заменяю «scan.exe» на «calc.exe», он по-прежнему создает 6 процессов вычислений вместо одного. Как я могу использовать только один процесс calc.exe для всех действий? Еще раз спасибо за вашу помощь, Скотт. – JPL

0

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

Что бы я сделал, я бы нашел справочное руководство для scan.exe и выяснил, можно ли его назвать, передав ему имя файла, в котором файл будет содержать список файлов для сканирования.

Поскольку вы не предоставляете точную версию продукта, я могу только догадываться. В соответствии с этим link, scan.exe принимает CHECKLIST параметра:

/CHECKLIST=<filename> Scan list of files contained in <filename>. 

Опять же, я не знаю, если это относится к вашей конкретной версии scan.exe, но вы можете узнать, я уверен, что ;-)

Cheers

+0

Спасибо Люку и Скотту за ваше время и руководство. Я, безусловно, направляюсь на их сайт, чтобы получить больше параметров о том, как сканировать несколько файлов на процесс. – JPL