bugfix> c# > 投稿

私はWPFプロジェクトで働いています.Windowsインストーラを作成するときにアプリケーションフォルダに管理者権限を与えることができますか?

回答 2 件
  • 質問を明確にする必要があるかもしれません。ここでスタインの答えといくつかの重複がありますが、拡大するために...

    フォルダは管理者権限を取得しません。プログラムは昇格した特権を取得できます。フォルダーには、さまざまな特権を持つプログラムからより多くの(またはより少ない)アクセスを許可するアクセス権があります。したがって:

    インストーラーで何らかの方法で管理者(昇格)としてプログラムを実行できるようにする場合、インストーラーはこれを実行できません。プログラム自体には、管理者特権への昇格を要求する昇​​格マニフェストが必要です。つまり、通常の制限ユーザーは実行できません。

    問題がProgram Filesフォルダーにデータファイルがある(または作成する)ことで、制限されたユーザーが実行したときにアプリケーションがそれらに書き込むことができない場合、プログラムはこれらのファイルを間違った場所に保存します。フォルダーには、ユーザーのアプリケーションデータなどの名前が付いています。これは、フォルダーが使用されることになっているためです。プログラムコードを含むProgram Filesフォルダーのセキュリティを変更することは、制限されたユーザーがコードファイルを変更できるため、一般に安全ではないと見なされます。認定ルールは有用なガイドラインです。

    「10.3コンピューター上のユーザー間で共有する必要があるアプリデータは、ProgramData内に保存する必要があります

    10.4特定のユーザーに限定され、コンピューターの他のユーザーと共有されないアプリのデータは、Users \\ AppDataに保存する必要があります。

    MSIファイルを作成するためにどのツールを使用しているのかまだ説明していません。これは、さらに質問があるかどうかを知るのに役立ちます。

  • より長い評価:プログラムファイルの下で.exeを実行中にSystem.UnauthorizedAccessException(以下にリストされているものに加えていくつかの他のオプション)。


    変更できますACL 通常のユーザーが書き込み可能なインストールフォルダの場合、またはマニフェスト アプリケーションの実行に管理者権限を要求する(通常のユーザーは、管理者パスワードを入力しない限り、通常、このようなアプリケーションを昇格させることはできません)。しかし、そうすることは非常に悪い設計です。特定の環境での使用がアプリケーションを拒否されるレベルまでです。

    推奨されるアプローチは、通常のユーザーが書き込み可能な場所にアプリケーションファイル(データと設定)を確実に保存することです。セットアップを変更したりカスタマイズしたりする必要はありません。 My Documents に書き込むことができます  または %UserProfile% のどこか  - 例えば。

    もう少し具体的な説明については、この既存の回答を参照してください。C ++ MSIパッケージの管理者権限

あなたの答え