私はWPFプロジェクトで働いています.Windowsインストーラを作成するときにアプリケーションフォルダに管理者権限を与えることができますか?
回答 2 件
より長い評価:プログラムファイルの下で.exeを実行中にSystem.UnauthorizedAccessException(以下にリストされているものに加えていくつかの他のオプション)。
変更できますACL 通常のユーザーが書き込み可能なインストールフォルダの場合、またはマニフェスト アプリケーションの実行に管理者権限を要求する(通常のユーザーは、管理者パスワードを入力しない限り、通常、このようなアプリケーションを昇格させることはできません)。しかし、そうすることは非常に悪い設計です。特定の環境での使用がアプリケーションを拒否されるレベルまでです。
推奨されるアプローチは、通常のユーザーが書き込み可能な場所にアプリケーションファイル(データと設定)を確実に保存することです。セットアップを変更したりカスタマイズしたりする必要はありません。
My Documents
に書き込むことができます または%UserProfile%
のどこか - 例えば。もう少し具体的な説明については、この既存の回答を参照してください。C ++ MSIパッケージの管理者権限。
関連した質問
- WPF ListViewの水平スクロールバーは、垂直スクロールが行われない限り表示されません。
- 機能がボタンによってトリガーされた場合、WPFバインディングは機能しません
- RadioButtons/Checkboxを2列に分割します
- 数字のみのC#テキストボックス
- C#DateTime + TimeSpan =追加の12時間?
- NETSDK1135サポートされているOSPlatformVersion100190410をTargetPlatformVersion70より高くすることはできません
- WPF MVVMでカスタムタイプのデフォルト値を復元するにはどうすればよいですか?
- WPFアプリクラスから変数にアクセスするための推奨される方法
- LiveChartsを使用してLineSeriesの値プロパティをバインドする方法
- アラビア語形式のWPFですべての曜日の週の名前を取得するにはどうすればよいですか?
質問を明確にする必要があるかもしれません。ここでスタインの答えといくつかの重複がありますが、拡大するために...
フォルダは管理者権限を取得しません。プログラムは昇格した特権を取得できます。フォルダーには、さまざまな特権を持つプログラムからより多くの(またはより少ない)アクセスを許可するアクセス権があります。したがって:
インストーラーで何らかの方法で管理者(昇格)としてプログラムを実行できるようにする場合、インストーラーはこれを実行できません。プログラム自体には、管理者特権への昇格を要求する昇格マニフェストが必要です。つまり、通常の制限ユーザーは実行できません。
問題がProgram Filesフォルダーにデータファイルがある(または作成する)ことで、制限されたユーザーが実行したときにアプリケーションがそれらに書き込むことができない場合、プログラムはこれらのファイルを間違った場所に保存します。フォルダーには、ユーザーのアプリケーションデータなどの名前が付いています。これは、フォルダーが使用されることになっているためです。プログラムコードを含むProgram Filesフォルダーのセキュリティを変更することは、制限されたユーザーがコードファイルを変更できるため、一般に安全ではないと見なされます。認定ルールは有用なガイドラインです。
「10.3コンピューター上のユーザー間で共有する必要があるアプリデータは、ProgramData内に保存する必要があります
10.4特定のユーザーに限定され、コンピューターの他のユーザーと共有されないアプリのデータは、Users \\ AppDataに保存する必要があります。
MSIファイルを作成するためにどのツールを使用しているのかまだ説明していません。これは、さらに質問があるかどうかを知るのに役立ちます。