如何在Process.Start()中通过cmd.exe运行cmd.exe和大量开关

时间:2011-04-06 23:16:12

标签: c# process

与上一个问题类似,我有时会在cmd.exe上运行此命令:

Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m "SHARP MX-5500N PS" /h "Windows NT x86" /v 3 /f sn0hwenu.inf

如果我想通过Process.Start()运行它,PrintUIEntry的所有内容都是文件名和其余参数吗?我是否需要在上面的字符串前面连接cmd.exe(无论如何我都假设是),如果是这种情况,则是文件名和其余参数。这里有任何经验法则吗?

由于

2 个答案:

答案 0 :(得分:2)

文件名应为Rundll32.exe。 Printui.dll等是参数。你不需要cmd.exe,因为rundll32是它自己的程序。

答案 1 :(得分:0)

您可以使用ProcessStartInfo指定要运行的文件(rundll32),使用Arguments属性指定要使用的参数。它不是数组,而是字符串。

startInfo.Arguments =“/ x / y / z”;

您不需要cmd.exe,因为您正在启动一个将成为rundll32的进程,该进程不需要cmd来托管它。

ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.FileName = "rundll32.EXE";
    startInfo.Arguments = "Printui.dll,PrintUIEntry /ia /K /q /m "SHARP MX-5500N PS" /h "Windows NT x86" /v 3 /f sn0hwenu.inf";
    Process.Start(startInfo);

请注意,您可能需要在引号中包装参数(看起来您已经在做了)。例如,如果你给路径c:\ Program Files ...你需要将它包装在引号中,否则在尝试运行过程时会出错

startInfo.Arguments = "\"c:\\Program Files\\...\"";

另请注意,单独指定rundll32.exe可能无效。我不确定process.Start是否使用PATH环境变量来解析文件,因此您可能需要提供rundll32.exe的完整路径