3

私の Win32 アプリケーションでは、作成および管理する匿名パイプへのリダイレクトされた入力と出力を使用して子プロセスを実行する機能があります。これはすべて CreateProcess() 関数で機能します。ただし、Win7 (およびおそらく Vista) では、そのプロセスを管理者として実行する必要がある場合、これは失敗します。したがって、私が探しているのは、エクスプローラーで「管理者として実行」コマンドに相当するものを実行する方法です。これにより、標準の UAC プロンプトが表示され、昇格されたアクセス許可でプロセスが作成されます。これを行うために「runas」オプションを ShellExecute に使用することについて話している記事を見たことがありますが、それを見ると、std の入力と出力をパイプにリダイレクトする必要があるコントロールがありません。助言がありますか?

4

2 に答える 2

2

子アプリにマニフェストを配置し、ShellExecuteを使用して起動すると、マニフェストが使用され、UACプロンプトが表示されます。(ほとんどの場合、これは「ルーン」アプローチよりも優先されます。)これにより、UACを気にせずにアプリを好きなように起動し、マニフェストから昇格を取得できる場合があります。

ただし、参照する「管理」部分に、昇格されたアプリと通信する低特権アプリが含まれる場合は、問題が発生する可能性があります。UACはそれを禁じています。

于 2010-08-04T12:43:06.540 に答える