0

通常の権限でEXEを実行していますが、管理者権限が必要な場合があります(たとえば、VSS /ボリュームシャドウコピーを使用している場合)(間違っていない場合)

アイデアは、追加の特権を必要とするコードを別のEXEに配置し、必要に応じて起動することです。

それは私がめったに必要としないものですが、それでも最後の手段としてそれを持っている必要があります(これは、私がそれを呼び出す必要がほとんどないということです、おそらく平均して1日1回/ 2回)

私の質問は、通常のEXEから管理者向けのプロセスを呼び出すにはどうすればよいですか?

4

1 に答える 1

7

requestedExecutionLevelVista以降でUACが有効になっている場合、最適なオプションは、値をに設定するUACマニフェスト(できればリソースとして埋め込まれますが、外部の.manifestファイルを使用して実行することもできます)を2番目のEXEに提供することrequireAdministratorです。その後CreateProcess()、通常どおりEXEファイルを実行できます。マニフェストを提供するオプションがない場合、またはXPや非UACセットアップをサポートする必要がある場合は、代わりに動詞をShellExecute/Ex()指定することを使用できます。"runas"これらの設定のいずれかの下で、OSはユーザーに許可とアカウントの資格情報の入力を求め、必要に応じて新しいプロセスに適切なセキュリティ権限を適用します。

もう1つのオプションは、この記事で提供されているサードパーティCreateProcess...Elevated()(および)の実装です。ShellExecute...Elevated()

Vista UAC:決定的なガイド

于 2013-01-02T22:38:46.287 に答える