7

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

首先,我需要通过管理员权限运行可执行文件。这篇文章帮助我实现了这一点: 以编程方式在 vista 中以管理员身份运行 cmd.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);      

谢谢

4

3 回答 3

1

我相信您正在寻找的答案就在Runas 命令文档中。

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

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

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

processStartInfo.Arguments = "/env /user:" + "Administrator" + " \"cmd -p explore\"";
于 2010-04-27T11:34:28.987 回答
0

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

于 2010-04-26T01:04:17.253 回答
0

您可以使用 UseShellExecute 命令运行该过程并传入用户名和密码

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.useshellexecute%28v=VS.100%29.aspx

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.username%28v=VS.100%29.aspx

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

于 2010-04-25T22:03:49.403 回答