运行 C# 中的外部程序参数有问题

Having an issue with running an external programs arguments in C#

我有以下在 Perl 中运行良好的命令

my $bugcmd = `"C:\Program Files (x86)\McAfee\VirusScan Enterprise\scan32.exe" 
    $source /all /archive /loguser /prompt /log $path$itemID.txt /autoexit`;

但是在 C# 中,我一辈子都无法在 C# 中创建日志文件,它扫描它只是不创建日志,任何帮助将不胜感激。

string log = txtSource.Text + itemID + ".txt";

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Program Files (x86)\McAfee\VirusScan Enterprise\scan32.exe";
startInfo.Arguments = drive + " /all /archive /loguser /prompt /autoexit /log" + log;
Process.Start(startInfo);

路径和 itemID 在调试器中看起来没问题。 C:\Temp\itemID.txt

使用 string.Format 可能有助于揭示问题所在(您在 \log 之后缺少 space)。我认为这可能有帮助:

startInfo.Arguments = 
    string.Format("{0} /all /archive /loguser /prompt /autoexit /log {1}", drive, log);

有时确保日志路径也被引号括起来是个好主意,如果您从 .config 或您无法控制的其他地方读取它,因为它可能有 spaces 在里面。这可能也适用于 drive?

要处理那个案子:

startInfo.Arguments = 
    string.Format("\"{0}\" /all /archive /loguser /prompt /autoexit /log \"{1}\"", 
        drive, log);