与上一个问题类似,我有时会在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(无论如何我都假设是),如果是这种情况,则是文件名和其余参数。这里有任何经验法则吗?
由于
答案 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的完整路径