C# 如何通过c传递多个命令行参数#

C# 如何通过c传递多个命令行参数#,c#,command-line,cmd,command-line-arguments,shellexecute,C#,Command Line,Cmd,Command Line Arguments,Shellexecute,对于名为handle.exe的进程,我需要通过c#传递多个命令行参数: 首先,我需要通过管理员权限运行可执行文件。这篇文章帮助我实现了以下目标: 但是接下来的问题是调用实际的行参数,例如“-p explore” 如何将命令行参数一起指定,或者连续指定 目前的代码如下: Process p = new Process(); ProcessStartInfo processStartInfo = new ProcessStartInfo("filePath");

对于名为handle.exe的进程,我需要通过c#传递多个命令行参数:

首先,我需要通过管理员权限运行可执行文件。这篇文章帮助我实现了以下目标:

但是接下来的问题是调用实际的行参数,例如“-p explore”

如何将命令行参数一起指定,或者连续指定

目前的代码如下:

        Process p = new Process();
        ProcessStartInfo processStartInfo = new ProcessStartInfo("filePath");
        processStartInfo.CreateNoWindow = true;
        processStartInfo.UseShellExecute = false;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.Verb = "runas";
        processStartInfo.Arguments = "/env /user:" + "Administrator" + " cmd";

        p.StartInfo = processStartInfo;
        p.Start();
        string output = p.StandardOutput.ReadToEnd();
        p.WaitForExit();
        Console.WriteLine(output);      

谢谢

您可以使用UseShellExecute命令运行该进程,并输入用户名和密码


尽管您将在某处存储用户名和密码

如果您试图使用提升的权限运行进程,可能有比调用runas更好的方法。

我相信您正在寻找的答案是正确的

runas命令的最后一个参数似乎是与任何参数一起运行的命令。关键是使用引号将实际的命令可执行文件与其参数分组,这样这些值就不会被视为runas命令的单独参数,而是作为单独的命令发出

因此,在您的示例中,您可能需要执行以下操作

processStartInfo.Arguments = "/env /user:" + "Administrator" + " \"cmd -p explore\"";

在运行应用程序时,主函数通常不接收来自的文本集合。如果是这样,你就不能解析吗?问题是我在添加它们,而不是检索它们。你的代码有什么问题?我需要获取-p explore提供给我的数据,但上面的代码没有返回它,因为我必须将初始参数设置为管理权限。我尝试了这个,我还尝试添加cmd参数,例如/k(continueexecution),但仍然没有任何效果。
processStartInfo.Arguments = "/env /user:" + "Administrator" + " \"cmd -p explore\"";