22


8

Windowsレジストリをユーザー単位の状態で使用する必要があるのはいつですか?また、ファイルシステム、特にユーザーのAppDataフォルダを使用するのはいつですか? (C:\ Users \ USERNAME \ AppDataなど) 分離ストレージはどこに入りますか?

かなり堅固な規則があるのでしょうか、それとも「レジストリに格納するにはデータが多くなりすぎるまでレジストリを使用する」のようなあいまいなことなのでしょうか。 または「使用したいと思うものは何でも使用する」。

決定に影響を与えるWindowsロゴの要件はありますか?

AppDataディレクトリを使用する場合、Local、Roaming、およびLocalLowをどのように選択すればよいですか?

編集:私はちょうどこれらの同じような質問に気づいた:

返事をまとめます。

4 Answer


13


あなたが少数のキーと値のペアを持っていて値が大きくないならレジストリは素晴らしいです - そしてあなたはxcopy配備を気にしません - そして私はこれを正確ではありませんレジストリを操作するときに苦痛になります)。

あなたがxcopy配置を望むなら、データは明らかにプログラムと同じフォルダになければなりません - しかし、プログラムはAppDataフォルダの下のどこかにあることができます、それは "プログラムファイル"の下にある必要はありません。

ClickOnceのように、分離ストレージは、必要なとき、または使用する必要があるときにのみ使用してください。

それ以外の場合はAppData \ Roamingを使用し、適切な理由がある場合にのみLocalまたはLocalLowを使用してください。

編集:これはローミング、ローカルとLocalLowの違いは:

Windowsには「ローミングプロファイル」と呼ばれる、あまり知られていない機能があります。一般的な考え方は、この機能を有効にした企業環境では、すべてのユーザーが任意のコンピュータを使用できることです。

ユーザーが自分のプライベート設定をログインするとサーバーからダウンロードされ、ログアウトすると設定がサーバーにアップロードされます(実際のプロセスは明らかに複雑です)。

Vistaの場合は[ローミング]フォルダ、XPの場合は[ア​​プリケーションデータ]フォルダ内のファイルがユーザと一緒に移動します。したがって、設定やデータはそこに保存する必要があります。

Vistaの "Local"と "LocalLow"の下のファイルとXPの "Local Settings"の下のファイルは違います。そのため、一時ファイル、特定のコンピュータに関連するもの、または再計算可能なデータに適しています。

Vistaでは、私たち全員が知っていて愛している新しいセキュリティ機能の一部として、あなたは "低完全性モード"(例えば保護モードのIE)でプログラムを実行することができますユーザーのプロファイル - "LocalLow"フォルダ以下のファイルを除く。

したがって、結論として、 "LocalLow"に保存されたファイルは本質的に安全ではなく、 "Local" / "Local Settings"のファイルは大企業では使用できない可能性があります。 「ローミング」/「アプリケーションデータ」


5


私のレジストリを乱雑にしないでくださいありがとう。

分離ストレージを使用してください。

http://www.codinghorror.com/blog/archives/000939.htmlを参照してください。[Windowsレジストリは良い考えでしたか。


4


あなたは Isolated Storageを検討することをお勧めします。


1


確定したルールがあるかどうかはわかりませんが、検討すべきことの1つは、レジストリがトランザクション処理されることです。これは、同時の読み取り/書き込み操作に対してより安全です。 そのため、実行時にユーザーデータが複数のスレッドによって書き込まれる可能性がある場合(または製品パッケージに複数のexeがある場合)、レジストリの使用を検討してください。

歴史:MSが.iniファイルからレジストリに移動した1つの理由(私が聞いたように)は、正確に同時アクセス問題を処理しようとしたことです。

Net (sort of) went back to .ini files in the form of xml .config files,

ただし、これらの設定ファイルは実行時に書き込まれることは想定されていません(少なくとも同時書き込み/読み取りの可能性がある場合はそうではありません)。

さらに詳しい情報:http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx