2013-02-20 42 views
1

所以我有一段代碼用/ requests選項調用powercfg並從stdout中獲得結果。從c#調用powercfg /請求給出錯誤的值

Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.FileName = "powercfg"; 
p.StartInfo.Arguments = "/requests"; 
p.Start(); 

string output = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 

但是,當我運行此代碼時,我得到完全不同的輸出,當我在命令行上運行相同的命令。

在代碼版本的情況下,我只會得到一個「[驅動程序]?」的負載。值返回,但在命令行中,我通常會得到2或3個正確形成的響應。

我已經在同一個命令提示符窗口中運行我的代碼,因爲具有相同環境的同一個用戶仍然沒有快樂。

任何想法?

回答

0

所以實際的原因是我的應用程序需要編譯爲「任何CPU」。將其設置爲x86或x64會導致加載其中一個相關庫的正確版本時出現問題。

0

它可能與應用程序運行的用戶上下文有關,例如,如果以管理員身份運行應用程序,Process.Start將嘗試在相同的上下文中啓動該過程。

+0

嗯,我確實認爲,這就是爲什麼我運行我的程序在自己的命令在同一個shell ...一個接一個......當然,這意味着他們都使用相同的用戶上下文? – 2013-02-20 14:20:40

相關問題