Linux では通常、ユーザー構成ファイルを $HOME/.myapp に置き、Windows では APPDATA を使用します。ここまでは順調ですね。
非ユーザー固有の構成はどうですか? Linux では、/etc
. Windowsに同等のものはありますか?ユーザーがログインする前にサービスを実行したいことに注意してください。また、それが役割を果たす場合に備えて、Javaで開発しています。
あるいは、これに間違った方法でアプローチしていますか?
Linux では通常、ユーザー構成ファイルを $HOME/.myapp に置き、Windows では APPDATA を使用します。ここまでは順調ですね。
非ユーザー固有の構成はどうですか? Linux では、/etc
. Windowsに同等のものはありますか?ユーザーがログインする前にサービスを実行したいことに注意してください。また、それが役割を果たす場合に備えて、Javaで開発しています。
あるいは、これに間違った方法でアプローチしていますか?
ALLUSERPROFILES をベース ディレクトリとして使用できます。この環境変数は、Windows7 では C:\PROGRAMDATA フォルダーに解決されます。もちろん、アプリケーション用に特定のフォルダーを追加する必要があります
要約すると、既知のフォルダー ProgramData を使用する必要があります。
パスのハード コーディングを避けるため (したがって、ここでパスを提供しない理由)、常に次のいずれかの方法で値を取得する必要があります。
%PROGRAMDATA%
環境変数(使用することもできますが、より意味がある%ALLUSERSPROFILE%
と思います)%PROGRAMDATA%
SHGetKnownFolderPath
は、FOLDERID_ProgramData
.System.Environment.GetFolderPath
、CommonApplicationData
.このフォルダーは、管理者以外は書き込み可能ではないため、要件に応じて、プログラム用のディレクトリを作成し、インストール時に必要な ACL を設定する必要があります。
このトピックに関する有益な情報は、ブログ記事「プログラム ファイルの代わりにプログラム データをどこに書き込むべきか」で提供されています。
他の既知のフォルダの使用に関心のある方のために、MSDN は詳細なドキュメントを提供しています。
Windows では、アプリのほとんどの「プログラム ファイル」は C:\Program Files\MyApp にあります。環境変数は %ProgramFiles%\MyApp になります。