2011-04-06 30 views
0

上一個問題一樣,我有時CMD.EXE運行此命令:如何運行CMD.EXE並通過cmd.exe,在的Process.Start()有很多開關

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

您可以使用ProcessStartInfo指定要運行的文件(rundll32)和Arguments屬性以指定要使用的參數。它不是一個數組,而是一個字符串。

startInfo.Arguments =「/ x/y/z」;

你不需要cmd.exe,因爲你正在啓動一個將不需要cmd來處理它的rundll32進程。

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的完整路徑

2

文件名應該是Rundll32.exe。 Printui.dll等是參數。你不需要cmd.exe,因爲rundll32是它自己的程序。