我有一个基于Windows的C#应用程序,它调用一个外部scan.exe文件来扫描一个目录。
在代码下方,我会进行流程调用:
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 :(得分:1)
如果您不希望被要求提供每个文件,则运行您的代码的程序必须是管理员。您可以自动提示管理员by adding a manifest file并将requestedExecutionLevel
标记设置为
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
答案 1 :(得分:0)
就像其他人的评论所解释的那样,除非程序设计为接受多个文件在一个命令行调用上进行扫描,否则你无法在自己的代码中对它进行任何操作。
我会做什么,我会找到scan.exe的参考手册,并找出是否可以调用它,传递一个文件名,哪个文件包含要扫描的文件列表。
由于您未提供确切的产品版本,我只能猜测。根据此link,scan.exe接受CHECKLIST
参数:
/CHECKLIST=<filename> Scan list of files contained in <filename>.
同样,我不知道这是否适用于您特定版本的scan.exe,但您可以找到,我很确定; - )
干杯