0

管理者特権を必要とするセットアップ機能がいくつかありますが、その結果は昇格されて実行されない別のアプリケーションによって消費されます。したがって、単体テストで実際に現実を反映するには、セットアップ関数を呼び出してから、何らかの方法で標高を下げる必要があります。これにより、セットアップを使用する関数を呼び出すことができます。それを行うための合理的に簡単な方法はありませんか?使えばいいらしい

CreateRestrictedToken

ImpersonateLoggedOnUser

例はありますか?

4

1 に答える 1

0

UAC の昇格は、プロセスの起動時にのみ実行されます。実行を開始したプロセスを昇格 (降格) することはできません。したがって、あなたが試みていることを行うには、別のプロセスが必要です。次のいずれかを実行できます。

  1. 最初は昇格されていない.exeを実行し、セットアップ関数を呼び出す必要があるときに新しい昇格プロセスを開始します。昇格されていないプロセスはShellExecute/Ex()"runas"動詞を使用するか、サードパーティのCreateProcessElevated()実装を使用して、昇格された状態で新しいプロセスを開始できます。

  2. 最初に昇格した.exeを実行し、セットアップ関数を呼び出してから、消費者関数を呼び出す必要があるときに、CreateRestrictedToken()およびを使用して、昇格されていない別のプロセスを開始します。CreateProcessAsUser()

  3. セットアップ関数を COM オブジェクトに移動し、昇格されていない状態で .exe を実行し、セットアップ関数を呼び出す必要があるときに、 COM 昇格モニカーを使用して COM オブジェクトを昇格された状態でインスタンス化します。

#1 と #2 については、管理を容易にするために、すべてのコードを 1 つの .exe ファイルにまとめて、それ自体の新しいコピーを実行し、呼び出す関数を指定してすぐに終了するコマンドライン パラメータを渡すことができます。 .

于 2013-04-29T23:37:01.800 に答える