2009-07-10 12 views
2

私は、Windowsマシンにアプリケーション設定を置くための受け入れ可能な出発点を探しています。私は複数のアプリケーションを持っています。個人的な理由から、私はレジストリを使用したくないです:私はプレーンテキスト初期化ファイル(.ini)を好む。また、実行可能ファイルと同じディレクトリにファイルを保持しているような気がしないので、理想的な状況では、ユーザーまたはシステム管理者がどこに書き込むことが許可されているかのどこかにそれらを保存することができます。初期化ファイルをどこに置くか

私はWindowsユーザーではなく、最初は$HOME/.my_company_name/etc/my_company_nameとなりますが、Windowsではこれらの場所に概念的に相当するものがありますか?

 
%APPDATA% 
%HOMEDRIVE%%HOMEPATH%\Local Settings 
%SYSTEMROOT% 

を経由して:私はまだWindowsのサービスの中から、これらの変数がまだ存在するかどうかを確認する必要があります...

答えて

4

を私がのAppDataは何だと思うだけでSET出力に見て推測

あなたは欲しい。

SHGetFolderPath(SHFOLDER.DLLから)を使用すると、これをプログラムで取得できます。 MSDN 'Data and Settings Management'から

( '正しく分類して保存・アプリケーション・データ' のセクション4.2を参照してください):

TCHAR szAppData[MAX_PATH]; 
… 
hr = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szAppData); 

追加[company name]\[product name]\[version] szAppDataにPathAppendを使用して:

PathAppend(szAppData, "Company\Product\1.0\File.ini") 

非ユーザー固有のためCSIDL_COMMON_APPDATAもあります非ローミングデータ(ユーザーが別のマシンにログオンしたときにネットワーク経由でコピーすべきではないデータ)の場合はCSIDL_LOCAL_APPDATAとなります。

+0

私は同意します。ローミングがオンになっている場合は、そのフォルダもネットワーク経由でユーザとローミングします。 –

+0

ヒントのおかげで。 INIファイルをマップ>ディクショナリに読み込んで、この関数をCSIDL_COMMON_APPDATAとCSIDL_LOCAL_APPDATAの2回ずつ呼び出す関数を作成しました。 szAppDataは\で終了しません。それはWXP特有のものですか? – mariotomo

+0

iniファイルを読み込むためのwin32 APIがあります。GetPrivateProfileString(http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx) PathAppendを使用すると、それが\で終わるかどうかを心配する。 win32へようこそ:それはすべてか何か... – danio

関連する問題