2017-09-23 128 views
0

我試圖得到結果,是或否,用戶按管理員身份運行時回答程序。如何獲得結果後運行.bat作爲管理員 - C#

例子: IMAGE

我想用下面的代碼:

var processInstall = new ProcessStartInfo(); 
      processInstall.CreateNoWindow = true; 
      processInstall.FileName = "myBatchFileAddress"; 
      processInstall.Verb = "runas"; 
      var process = new Process(); 
      process.StartInfo = processInstall; 
      process.Start(); 
      process.WaitForExit(); 
      //Here I must deal with the result of user, if is yes or no 
+0

這個圖像是Window的UAC,你不會得到答案。你甚至可以禁用它,所以它從不顯示。如果'是'該過程將執行,否則它不會 –

回答

0

批處理文件是一個非常古老的技術。 直譯爲與DOS一樣古老。所以從本質上講,溝通能力是有限的。

DOS時代程序主要通過「ERRORLEVEL」進行通信。控制檯程序中的返回仍然會影響所述錯誤級別。 0返回「沒問題」。任何其他問題。批處理文件可以檢查它。而且我有90%的Windows確實仍然使用它 - 如果安裝程序只返回0而不是0,它會問「我應該再次嘗試兼容性設置嗎?」使用EXIT可以定義批處理文件「返回」的極限錯誤。

但是,還有另一種方法,具體取決於程序的詳細程度:IO redirection

請記住,解釋批處理文件。所以你要運行程序,然後給出命令來運行控制檯(通常作爲具有完整路徑的參數;詳情參見控制檯文檔)。

最後以管理員身份執行任何批處理文件都會使路徑完全失效。批文件需要爲designed to compensate

當然,如果這些程序是由您自己編寫的,您可以選擇進程間通信等。但我認爲現在情​​況並非如此。

編輯:看來我誤解了這個問題。如果一個程序由於Manifest而要求管理員權限,或者用runas運行但是提升被拒絕,那麼執行永遠不會執行。該程序甚至不是由Windows啓動的。它顯然不會被加載到內存中。

+0

「編輯:我似乎誤解了這個問題。如果一個程序由於Manifest要求管理員權限或者用runas運行但是高程被拒絕,執行是從來沒有做過,程序甚至不是由Windows開始的,它甚至不會被加載到內存中。「 而且,我怎麼知道用戶選擇了哪個選項? – Adolfok3

+0

請刪除與本問題無關的答案 –

相關問題