2017-02-28 1 views
2

私は裸のWin32Apiを使用しています。 権限を昇格してアプリを起動する必要があり、アプリにはマニフェストがありません。したがって、唯一の方法は、ShellExecuteExrunAs動詞に使用することです。それは動作しますが、私はプロセスstdoutを読む必要があります。 CreateProcessと私はSTARTUPINFO私はプロセスのstdoutをパイプすることができますがあります。ShellExecuteのリダイレクトプロセスstdout(または他の方法でエレベータとリダイレクトする)

ただし、ShellExecuteExにはこのようなAPIはありません。 はどのようにしてstdoutをリダイレクトできますか?

+0

リダイレクションのために昇格するにはShellExecuteを呼び出し、リダイレクトにはCreateProcessを呼び出します。 –

+0

私はマニフェストにrequireAdministratorを追加しようとしましたが、黄色の警告を防ぐために署名が必要です – user996142

+0

さて、コードに証明書を署名してください。難しくない。 –

答えて

1

これはできません。 stdoutを読むにはCreateProcessが必要です。しかし、CreateProcessは昇格した別のプロセスを開始できません。

可能であれば、昇格した独自のプロセスを作成してください。このプロセスは標準出力をキャプチャすることがあります。いくつかのIPCを使用して、このプロセスと通信してstdoutを取得します。

または単純なパイプリダイレクトを使用します。

この質問は既にお問い合わせしてあり、duplicate toです。 も参照してくださいquestion about elevating

+1

"* CreateProcessは別のプロセスを起動できません*" - true、しかし['CreateProcessElevated()'](https://www.codeproject.com/Articles/19165/Vista-UAC-The-Definitive-Guide)can 。 –

関連する問題