9

カスタム マネージド (C#) アクションを埋め込む WiX 3.6 を使用して、Windows インストーラー パッケージを作成しました。

この段階で、インストールには以下が必要です。

  1. インストーラーは、特定のローカル管理者アカウント (この場合、ローカル管理者である SharePoint インストーラー アカウント) を使用して実行されます。
  2. ユーザー アカウント制御を無効にする

要件 1 をバイパスする方法は実際にはありません。マネージ アクションは、SharePoint インストーラー アカウントのコンテキストで実行される場合にのみ、特定の手順を実行できるからです。

要件 2 を削除し、UAC が有効になっている場合でもインストーラーを適切に実行したいと考えています。

私はこの問題をかなり広範囲に調査しましたが、まだ機能させることができません。パッケージにInstallScope="perMachine"を設定しました。これにより、UAC の昇格が適切に求められるように見えますが、インストーラーは悪名高い 2869 エラーで失敗します。

主な問題は、ローカル管理者アカウントではなく、現在のユーザーのコンテキストで実行する必要があるため、カスタム アクションがImpersonate="yes"で構成されていることです。オンラインで検索すると、ほとんどすべての「修正」がカスタム アクションでImpersonate="no"を指していますが、それは私にとっては選択肢ではありません。

したがって、私の質問は次のとおりです。UAC を完全に無効にすることなく、現在のユーザーの ID でカスタム マネージド アクションを実行する方法はありますか?

4

2 に答える 2

7

Impersonate="yes"カスタム アクションを使用すると、現在ログインしているユーザーの資格情報を使用して、管理者権限なしで実行されます。

Impersonate="no"カスタム アクションがSystem contextで実行されるとき。システム コンテキストで実行する場合、カスタム アクションはシステムに完全にアクセスできます。


WiXCustomAction要素のドキュメントから、Impersonate属性

この属性は、LocalSystem として実行される Windows インストーラーが、このカスタム アクションの実行時にインストール ユーザーのユーザー コンテキストを偽装する必要があるかどうかを指定します。通常、値は「yes」にする必要があります。ただし、カスタム アクションでマシンに変更を適用するために昇格された特権が必要な場合を除きます

于 2012-10-20T11:18:23.760 に答える