2009-07-20 16 views
1

私のプログラムでは、設定の詳細を.iniファイルに保存する必要があります。このプログラムは、IEとfirefoxの拡張機能もインストールしています。これらの拡張機能からこれらの.iniファイルも読みたいと思っています。私が.iniを "AppData/Roaming ..."に入れたままにすると、プロテクトモードのIE拡張は読み書きできなくなります。私が知る限り、AppData/LocalLowはプロテクトモードでしか読み込むことができません。すべての設定の詳細をこの "... AppData/LocalLoe ..."に移動している場合は、常に動作しますか?これは標準的な方法ですか?私が書いたものはすべてVistaのコンテキストにあります。それはXPで動作しますか? Win7?WINDOWSにプログラム設定ファイルを保存するのに最適な場所はどれですか?

答えて

0

この質問に対する私の答えを参照してください:How to decide where to store per-user state? Registry? AppData? Isolated Storage?

そこから引用する:

ファイルVistaまたは「アプリケーションデータ」内のユーザーの「ローミング」フォルダにXPでユーザーと動き回る - ので、任意の設定とデータを保存する必要があります。

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

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

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

UPDATE:プロファイルのローミングが使用されている

  1. (ビッグ環境協力)ローカルおよびLocalLowの内容は(となります)予告なしに消えることができます。
  2. これらはすべてユーザー単位の設定です。サーバーがユーザー(システムやネットワークなど)とは異なるアカウントで実行されている場合、それらのフォルダーの異なるコピーが作成されます。
+0

ご返信ありがとうございます。私の主なアプリケーションは小さなWebサーバーで、IEとFirefoxの拡張機能があります。したがって、Webサーバーが.iniで動作しているポートを維持する必要があり、拡張モジュールは正しいURLをフレームできるように拡張モジュールがそれを読み取ることができるはずです。私がローミングしている場合、IE保護モードでは読み込めません.LocalLowでこれを保持していると、LocalLowフォルダパスを見つけるXPComインターフェイス(スクリプト可能)が見つかりません。 – Manoj

+0

私はXPComについて何も知らないので、それを手伝ってはいけません.jia3epによると、パスを取得するWin32 APIはSHGetKnownFoldedPathです。 – Nir

+0

いくつか考慮すべき点については、私のアップデートを参照してください – Nir

0

あなたはWinAPIの使用すべきプログラムデータ用のフォルダパスを取得するには、次のWindows Vistaの機能SHGetFolderPathで

wchar_t path_buf[MAX_PATH]; 
SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0]); 

SHGetKnownFoldedPathと交換しました。その古い関数は、単にSHGetKnownFolderPathのラッパーになりました。

関連する問題