vb6 - 独自 - アプリケーション固有の設定はどこに保存すればよいですか?



visual studio アプリケーション の 設定 (2)

XP / Vista / Windows 7には、使用できる特別なフォルダがいくつかあります。

  • CSIDL_APPDATAフォルダは、最も関心があると思われるフォルダです。ここに格納されているデータは、ログインしているコンピュータが何であれ、ローミングユーザが利用できます。 これは簡単な設定データを保存するのに最適な場所です。 すべてのユーザーがこの(そして最後の)フォルダへの書き込み権限を持ちます。 上記のフォルダはいずれもユーザー生成データ用ではありません。 それは適切にMy Documents階層に属します。
  • 編集: Cody Greyがコメントで示唆しているように、常に現在のマシンにローカルであるがユーザーごとに確保されているアプリケーションデータのためのCSIDL_LOCAL_APPDATAも考慮しCSIDL_LOCAL_APPDATA 。 このフォルダ内のデータはローミングベースでは利用できないため、ユーザーが別のマシンにログインしても見逃さないようにする必要があります。

上記の説明をKarl Petersonの良い記事から恥知らずにコピーし、VB6プログラマーのために説明しました。 Karlには、ディレクトリを見つけるのに役立つ、 すぐに使えるクラスもありますが、私見では、彼は今回、物事を複雑にしすぎています。 以下のように、Bob RiemersmaはShellオブジェクトを使用して、 1行より良い方法を得ます。 以下のEDIT Bobのコメントは、なぜ早期バインディングではなく遅延バインディングを使用するのが最善なのかを説明しています。

Const ssfCOMMONAPPDATA = &H23 
Const ssfLOCALAPPDATA = &H1c
Const ssfAPPDATA = &H1a
Dim strAppData As String 

strAppData = _ 
    CreateObject("Shell.Application").NameSpace(ssfAPPDATA).Self.Path 

私の意見では、これらのディレクトリでINIファイルを使用続けるのは問題ありません

私は過去6年間、WinXPで動いていたVB6アプリケーションをアップデートするように頼まれました。 クライアントはWindows 7を使用したいと考えていました。これまで、アプリケーションはその設定をアプリケーションディレクトリにあるINIファイルに保存していました。 XPと7の大きな違いの1つは、 C:\Program Files\AppFolder書き込むことができなくなることです。

ファイルシステム上のどこに設定を保存すればよいのでしょうか。 アプリケーションはまだWinXP上で実行する必要があることを考えると、私はちょっと混乱しています。

WinXPでは、私は以下があります:

C:\Documents and Settings\profilename\Application Data
C:\Documents and Settings\profilename\Local Settings\Application Data

Windows 7では、次のものがあります。

C:\Users\profilename\AppData\Local
C:\Users\profilename\AppData\LocalLow
C:\Users\profilename\AppData\Roaming

これらの各フォルダには、さまざまな製品の設定/ファイルを格納しているように見えるサブフォルダがあります。

だから2つの質問:

  1. これらすべてのフォルダを考えると、設定はどこに保存されますか?
  2. このフォルダの適切な場所を教えてくれる、気の利いたWindows API呼び出しがあると思います。 そして私はそれがXPと7の両方で機能することを願っています。私の仮定は正しいですか? もしそうなら、リンクは大歓迎です。