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

Posted

技术标签:

【中文标题】如何通过 c# 传递多个命令行参数【英文标题】:How can I pass more than one command line argument via c# 【发布时间】:2011-02-12 04:48:42 【问题描述】:

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

首先,我需要通过管理员权限运行可执行文件。这篇文章帮助我实现了这一点: 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);      

谢谢

【问题讨论】:

main 函数通常不会从您运行应用程序时获取文本集合。如果是这样,您就不能解析一下吗? 问题是我正在添加它们,而不是检索它们 你的代码有什么问题? 我需要获取 -p explore 给我的数据,但是上面的代码没有返回它,因为我必须将初始参数设置为管理员权限。 【参考方案1】:

您可以使用 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

虽然您将在某处存储用户名和密码。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

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

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

【讨论】:

这个我试过了,我也试过加/k等cmd参数(继续执行),还是不行。

以上是关于如何通过 c# 传递多个命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在erl中为单个标志设置多个命令行参数

将命令行参数从 VB 传递到 C# WPF 应用程序

如何通过命令行在pytest中传递参数

在命令行 Spring Boot 中传递多个参数

打开文本文件作为命令行参数传递[关闭]

如何在 Python 3 中传递命令行参数