MSIのCustomActionでGetDirectories呼び出しがセキュリティ例外をスローしますONLYすべてのユーザー
-
25-09-2019 - |
質問
私は、ハンドオフパッケージのMSIの隣に座っているいくつかのファイルを展開するために使用していることをカスタムアクションを持っています。私のカスタムアクションはOriginalDatabaseパラメータを経由して、MSIのパスを渡され、私は横にフォルダがあるかどうかをチェックしています。何もあまりにもクレイジーが、お尻の痛みを把握することでした。
ローカルにコピーしたファイルから単一または複数のユーザーをインストールするには、チャンピオンのように動作します。ネットワーク共有からsetup.exeを実行するときに、単一のユーザーをインストールすると、私はセキュリティ例外を取得していますネットワーク共有からすべてのユーザーをインストールするときが正常に動作します。
は、問題の行はこれです
DirectoryInfo[] subdirectories = workingDirectoryInfo.GetDirectories("Foo");
私はすべてのアクセスIの必要性を持っている必要がありますので、カスタムアクションがSecurityAction.Demand
で実行されます。
誰でも提供することができる任意の入力を大幅に高く評価されている。
おかげで、 ケイシー
解決
私はあなたがユーザーごとのインストール時に、サーバー側は、それはインタラクティブなユーザーを偽装して取引を行うために昇格させる必要はなく、ファイルにアクセスすることができます信じています。あなたはすべてのユーザーのためにインストールすると、それは今、それは基本的にアクセスするファイルをマシンアカウントを使用して、アクセス権のエラーを取得ブームするシステムとして実行している昇格する必要があります。
これらのファイルは、あなたのインストーラに含まれていない理由を月私が尋ねますか?カスタムアクションを持っている必要はありませんので、あなたがそれらを含めることができますいくつかの方法はありませんか?そうしないとあなたがOriginalDatabaseを検知するカスタムアクションを記述する必要がありますネットワーク共有上にあり、実行する前にダウンすべてのファイルのユーザーコピーしない限り、インストール防ぐます。