.net インストーラー プロジェクトを使用してインストールされるプログラムを作成しています。プログラムは、設定ファイルを Program Files dir 内のそのディレクトリに書き込みます。制限されたユーザーがプログラムを実行している場合、アプリケーションがそのディレクトリにアクセスできないようにする Active Directory 設定がいくつかあると考えられます。これが問題にならないように、インストールを通じてアプリケーション フォルダーの設定を変更する方法はありますか?
2 に答える
Program Filesフォルダーへの書き込みは非常に悪い考えです。インストールすると、この場所は「読み取り専用」であると想定する必要があります。
プログラムファイルにユーザー設定を保存すると、設定を保存する必要がある2人以上のユーザー(ターミナルサービスなど)が同時にコンピューターを使用する場合に問題が発生します。他のユーザーに「自分の」設定を知らせますか?プログラムがユーザーAとしてファイルに設定を書き込んでも、ユーザーBがファイルを編集できない場合はどうなりますか?ユーザーBはディレクトリにアクセスできますが、設定ファイルはユーザーAが所有しているため、読み取り/削除はできません。
従来のwin9xプログラムは、多くの場合、プログラムファイルフォルダーに書き込みます。WindowsVistaは、これらのプログラムを機能させるために、実際には巧妙なトリックを実行します。プログラムがファイルを書き込むとき、vistaは実際には、そのユーザーだけがアクセスできる別の場所にファイルを配置します。HKLMへのレジストリ書き込みについても同じことが行われ(または、何時間ものデバッグの後で発見しました...)、Server2008も同じことを行います。
ユーザー設定を保存する必要がある場合は、設定をアプリケーションデータフォルダー(環境変数%APPDATA%)に保存するのが最善の方法です。
設定がシステム全体である場合、管理ユーザーはインストール後または最初の実行時にこれらを設定する必要があり、制限されたユーザーがこれらを上書きできないようにする必要があります。
だからあなたの質問に答えるために-はい、あなたが尋ねたことをする方法があります。しかし、それは悪い考えです。それは安全ではなく、おそらく長期的には問題を引き起こすでしょう。
フォルダのセキュリティ権限を変更できるカスタムインストーラクラスを作成できます。これは、ファイル/ディレクトリのセキュリティを変更する権限を持つユーザーによってインストールが行われることを前提としています。
最良のオプションは、プログラムファイルの下のディレクトリにまったく書き込まないことです。