.netインストーラを使用したI/O権限設定


1

.netインストーラプロジェクトを使用してインストールするプログラムを作成しています。プログラムは、設定ファイルをProgram Filesディレクトリにそのディレクトリに書き込みます。制限されたユーザーがプログラムを実行している場合、アプリケーションがそのディレクトリにアクセスするのを妨げるいくつかのアクティブなディレクトリ設定があると考えられます。インストール中にアプリケーションフォルダの設定を変更しても問題ありませんか?

2

Program Filesフォルダに書き込むことは本当に悪い考えです。一度インストールすると、この場所は「読み取り専用」とみなす必要があります。

Program Filesにユーザー設定を保存すると、2人以上のユーザーが同時にコンピュータを使用する(ターミナルサービスなど)場合、設定を保存する必要があります。他のユーザーに設定を知らせますか?あなたのプログラムがユーザAとしてファイルに設定を書き込むが、ユーザBがファイルを編集できない場合はどうなるのか?ユーザーBがこのディレクトリにアクセスできますが、ユーザーAが所有しているので、プリファレンスファイルを読み書きすることはできません。

従来のwin9xプログラムはプログラムファイルフォルダに書き込むことが多く、Windows Vistaでは実際にこれらをプログラムが動作します。あなたのプログラムがファイルを書き込むとき、Vistaは実際にはそのユーザーにしかアクセスできない他の場所に置きます。同じことがHKLMへのレジストリ書き込み(または何時間ものデバッグ後に発見された...)で行われ、Server 2008でも同じことが行われます。ユーザー設定を保存する必要がしている場合

最善の選択肢は、Application Dataフォルダに設定(環境変数%APPDATA%)の

設定はシステム全体である場合、管理者ユーザーがすべきを保存することですインストール後または最初の実行時にこれらを設定し、限られたユーザーが上書きできないようにする必要があります。

質問に答えるには - はい、あなたが尋ねたことをする方法があります。しかし、それは悪い考えです、それは安全ではなく、長期的には問題を引き起こすでしょう。


-1

フォルダのセキュリティ権限を変更できるカスタムインストーラクラスを作成できます。これは、ファイル/ディレクトリのセキュリティを変更する権限を持つユーザーがインストールを行ったと仮定します。

最良の選択肢は、Program Filesの下にあるディレクトリにまったく書き込まないことです。