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

时间:2010-04-25 21:56:58

标签: c# command-line cmd command-line-arguments shellexecute

我需要通过c#为一个名为handle.exe的进程传递多个命令行参数: http://www.google.com.mt/search?sourceid=chrome&ie=UTF-8&q=handle.exe

首先,我需要通过ADMINISTRATOR权限运行可执行文件。这篇文章帮我实现了这个目标: programatically run cmd.exe as adminstrator in vista, 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);      

由于

3 个答案:

答案 0 :(得分:1)

我相信您正在寻找的答案就在Runas command documentation之外。

runas /user:user@domain.microsoft.com "notepad my_file.txt" 

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

因此,在您的示例中,您可能希望执行以下操作。

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

答案 1 :(得分:0)

答案 2 :(得分:0)

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