我正在创建一个应该使用 lpr.exe 并向其传递参数的 C# 应用程序。我目前正在尝试这样做:
DirectoryInfo filePathDirectory = new DirectoryInfo(filePath);
Process a = new Process();
a.StartInfo.FileName = @"C:\Windows\System32\lpr.exe";
a.StartInfo.Arguments = "-SServerName.Domain.net -Plp " + "\"" + filePathDirectory + "\"";
a.StartInfo.UseShellExecute = false;
a.Start();
a.WaitForExit();
但是每当我到达时,a.Start();
我都会得到一个未处理的 Win32 异常,它指出“系统找不到指定的文件”。这真的让我很困惑,因为起初我以为这是我的论点,但事实证明,我可以从 VB 应用程序传递完全相同的论点并让它工作。
更新1:
有效的VB代码是:
Dim RPname As String
RPname = FileName.ToString
Dim a As New Process
a.StartInfo.FileName = "C:\Windows\system32\lpr.exe"
a.StartInfo.Arguments = "-SServerName.Domain.net -Plp " & Chr(34) & RPname & Chr(34)
a.StartInfo.UseShellExecute = False
a.Start()
a.WaitForExit()
更重要的是,我的问题似乎与参数声明无关,因为我可以将其注释掉,但我仍然收到错误。
更新 2:
我在进程开始时得到的错误是:系统找不到指定的文件。如果我将文件名更改为“C:\Windows\System32\cmd.exe”,我不会收到错误消息,它工作正常...