2009-05-19 15 views
20

ユーザーごとの状態でWindowsレジストリを使用する時期と、ファイルシステム、特にユーザーのAppDataフォルダをいつ使用する必要がありますか? (例:C:\ Users \ USERNAME \ AppData)。分離ストレージはどこに入っていますか?ユーザーごとの状態を保存する場所を決める方法は?レジストリ?アプリデータ?隔離されたストレージ?

かなり堅いルールがありますか、「あまりにも多くのデータがレジストリに格納されるようになるまで、レジストリを使用する」のようにあいまいです。または「あなたが気に入っているものを使用してください。」

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

私はAppDataディレクトリを使用する場合、どのようにローカル、ローミング、ローカルローから選択できますか?

編集:

回答を要約します。

答えて

11

あなたは、キー/値ペアの数が少ないと値は、レジストリが素晴らしいです、大きなされていない場合 - あなたはxcopyの展開を気にしない - それから(レジストリを使用私はこれが正確ではないことを知っていますが、レジストリを使って作業すると痛みになるのは通常は明らかです)。

xcopyを展開する場合は、データがプログラムと同じフォルダに格納されている必要がありますが、プログラムがAppDataフォルダの下のどこかにある場合は、「プログラムファイル」の下にある必要はありません。

隔離されたストレージは、必要なときにのみ使用するか、または使用する必要がある場合のみ使用します(例:ClickOnce)。

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

編集:ここではローミング、ローカルおよびLocalLowの差です:

Windowsは「移動プロファイル」と呼ばれるほとんど知られた特徴を持っているが、一般的な考え方は、この機能を持つ企業環境内の任意のユーザーが使用できる有効ということです任意のコンピュータ。

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

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

Vistaの「ローカル」と「ローカルの設定」のファイルとXPの「ローカルの設定」はありません。したがって、特定のコンピュータまたは再計算可能なデータに関連付けられている一時ファイルには適しています。

Vistaでは、われわれがよく知っている新しいセキュリティ機能の一部として、低レベルの完全性モード(例えば、プロテクトモードのIE)でプログラムを実行させることができます。これらのプログラムは、 "LocalLow"フォルダの下のファイルを除いて、ユーザのプロファイルにあるファイルにアクセスすることはできません。

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

+0

AppData \ Roaming vs. Localについて詳しく説明してください - それはなぜ優れていますか? –

+1

Sergey、あなたがリクエストした情報を追加しました。有用だと思っていますか? – Nir

+0

%APPDATA%がローミングフォルダを指しています。ローカルフォルダを指しているものはありますか? (Windows 7では少なくとも%APPDATA%¥..¥local以外) – Vaccano

4

Isolated Storageとするとよいでしょう。

+0

を参照してください。良い情報。分離ストレージは、実際の場所にAppData内のサブディレクトリを使用します。それはまた素敵に隔離されています。だから私はサイズベースの決定になると思う。いくつかのregエントリが必要な場合は、独立したストレージを使用しますか? – Cheeso

1

堅いルールがあるかどうかはわかりませんが、レジストリが処理されることを考慮する必要があります。これは、同時読み込み/書き込み操作では安全です。したがって、実行時に複数のスレッドによってユーザーデータが書き込まれる場合(または製品パッケージに複数のexeがある場合)は、レジストリの使用を検討してください。

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

.Net(ソート)はxml .configファイルの形で.iniファイルに戻ってきましたが、これらの設定ファイルは実行時に書き込まれることは想定されていません(少なくとも同時にライター/読者)。

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

+0

ユーザ設定ファイルは実行時に変更されるように設計されています。 –

5

レジストリを乱雑にしないでください。

孤立したストレージを使用してください。

はOK、感謝JeffsのブログにWas The Windows Registry a Good Idea? ...

関連する問題