首页 > 解决方案 > 进程参数在 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 。可执行程序”)

我错过了什么?

标签: c#

解决方案


我首先尝试将两个文件名都用引号引起来:

string Args = "\"" + FilePath + "\" \"" + FileOutPath + "\" 1";

所以当你通过它时它看起来像这样:

"{FilePath}" "{FileOutPath}" 1

推荐阅读