質問

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

役に立ちましたか?

解決

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

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

従来の win9x プログラムはプログラム ファイル フォルダーに書き込むことがよくありますが、Windows Vista は実際、これらのプログラムを動作させるために巧妙なトリックを行っています。プログラムがファイルを書き込むと、vista は実際にはそのユーザーのみがアクセスできる別の場所にそのファイルを置きます。HKLM へのレジストリ書き込みでも同じことが行われ (何時間もデバッグしてから気づいたのですが...)、Server 2008 でも同じことが行われます。

ユーザー設定を保存する必要がある場合、最良の代替方法は、設定をアプリケーション データ フォルダー (環境変数 %APPDATA%) に保存することです。

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

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

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top