24

MSI の一部として CustomAction があります。

ローカル管理者アカウントのメンバーでもあるドメイン アカウントとして実行する必要があります。

ネットワーク リソースにアクセスできないため、NoImpersonate フラグを使用してカスタム アクションを NT Authority\System として実行することはできません。

Vista/2008 で UAC が有効になっている場合、NoImpersonate がオフの場合、実行ユーザーとして実行されますが、権限のないトークンが使用され、.installState などのローカル リソースにアクセスできません。UAC アーキテクチャを参照してください

どちらかの方法を知っている人

  • 昇格したコマンド プロンプトから実行するのと同じ方法で、昇格したトークンを使用して MSI を強制的に実行しますか?

  • CustomAction を強制的に管理者特権で実行しますか (マニフェストの requireAdministrator が機能していないように見えます)?

  • UAC が有効になっているかどうか、およびそれが昇格されていないかどうかを確認し、そうであればインストールを警告またはキャンセルしますか?

4

3 に答える 3

34

これを見ている他の貧弱なs0dについて、私自身の質問に答えます。

  • マニフェストを MSI に追加することはできません。SETUP.EXE またはブートストラップを追加して、MSI をシェル化し、requireAdministrator を使用してマニフェストを作成できますが、MSI を使用するポイントの一部が無効になります。

  • CustomAction へのマニフェストの追加は、msiexec.exe から実行されるため機能しません

私がこれに取り組んだ方法は、MSIUSEREALADMINDETECTIONプロパティを 1 に設定して、特権条件が実際に機能するようにし、特権の起動条件を追加して、昇格したコマンド プロンプト経由での実行に関するエラー メッセージを表示し、インストールを終了することです。

これには嬉しい副作用があります。管理者特権のコマンド プロンプトから msi を実行すると、NoImpersonateの設定に関係なく、CustomActions が (標準ユーザー トークンではなく) 完全な管理者トークンを持つ現在のユーザーとして実行されます。

詳細 - http://www.microsoft.com/downloads/details.aspx?FamilyID=2cd92e43-6cda-478a-9e3b-4f831e899433

[編集] - VS にはMSIUSEREALADMINDETECTION プロパティを追加できるスクリプトをここに置きました。これは、VS にはそれを行う機能がなく、Orca は面倒だからです。

于 2008-11-22T22:10:50.260 に答える
1

マニフェストのrequireAdministratorが機能するはずです。

動詞として「RUNAS」を指定してShellExecuteを使用できるbootloader.exeファイルを使用することもできます(7-zipを使用してブートローダーを作成するか、他の多くの方法があります)。

于 2008-11-20T04:57:56.787 に答える