2017-09-23 4 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%の特定のウィンドウが実際にそれを使用しています - もしセットアップが0以外のものを返すならば、 "互換性の設定でもう一度やり直すべきですか?" EXITを使用すると、バッチファイルがERRORLEVELによって返されることを定義することができます。

ただし、プログラムの冗長度に応じて、別の方法があります:IO redirection

バッチファイルが解釈されることに注意してください。したがって、コンソール programmを実行してから、コンソールを実行するように指示します(通常、フルパスのパラメータとして、詳細はコンソールのマニュアルを参照してください)。

最後に、管理者としてバッチファイルを実行すると、パスが完全に壊れてしまう傾向があります。バッチファイルはdesigned to compensateである必要があります。

もちろん、それらのプログラムが自分で書かれている場合は、プロセス間通信のようなオプションがあります。しかし、私はこれを今のところ起こさなかった。

編集:私は質問を誤解したようです。プログラムがマニフェストによる管理権限を要求するか、runasで実行されているが高度が拒否されている場合、実行はまったく行われません。プログラマーはWindowsによっても起動されません。それはPropablyメモリにも読み込まれません。

+0

"編集:それは質問を誤解したように思えます。プログラマはWindowsで始まったことさえなく、メモリにも積極的にロードされていません。 また、ユーザーがどのオプションを選択したかわかりますか? – Adolfok3

+0

この質問に関連しない回答をすべて削除してください –

関連する問題