c# - 进程参数在 C# 中不起作用,但在 cmd 中起作用
问题描述
我试图将 2 个路径和 1 个字符串传递给一个文件,但它不起作用,我不知道为什么。
在 CMD 中执行此操作时,它可以完美运行。
调试我试图向其提供参数的应用程序,路径看起来不错,但我不断收到奇怪的最后错误,例如“无效句柄”或“共享错误”(参考 CreateFile API 的 Share 参数)或“无效参数”,但是当我在 CMD 中尝试时,我在 5 秒后一无所获
这是我提供路径的方式:
第一的:
OpenFileDialog FileDlg = new OpenFileDialog();
if (DialogResult.OK == FileDlg.ShowDialog()) {
FilePath = FileDlg.FileName;
}
第二:
SaveFileDialog SaveDlg = new SaveFileDialog();
if (DialogResult.OK == SaveDlg.ShowDialog()) {
FileOutPath = SaveDlg.FileName;
}
进程启动:
string Args = FilePath + " " + FileOutPath + " " + "1";
Process Proc = new Process();
Proc.StartInfo.FileName = FileToStart;
Proc.StartInfo.Arguments = Args;
Proc.StartInfo.UseShellExecute = false;
Proc.StartInfo.RedirectStandardOutput = true;
Proc.Start();
StreamReader OutRead = Proc.StandardOutput;
string Out = OutRead.ReadToEnd();
Proc.WaitForExit();
Proc.Close();
LogRichTextBox.Text = Out;
最初,这只是一个Process.Start("file", "args")
电话,也没有奏效。
第一个路径是本地文件,所以我不传递绝对路径,而只是传递可执行文件名(“abc.exe”),但第二个是绝对路径(“C:\Users\X\Destkop\cba 。可执行程序”)
我错过了什么?
解决方案
我首先尝试将两个文件名都用引号引起来:
string Args = "\"" + FilePath + "\" \"" + FileOutPath + "\" 1";
所以当你通过它时它看起来像这样:
"{FilePath}" "{FileOutPath}" 1