2009-04-15 17 views
3

誰でも、つまりコンピュータのすべてのユーザーが書き込み可能なデータを、Windows(Vista)システムではどこに置くべきですか? C:\ Users \ xxx \ AppData \ something、C:\ Program FilesとC:\ ProgramDataディレクトリとUACのVistaの概念はちょっと混乱します。Vistaにグローバルアプリケーションデータを配置する場所

また、Javaでこれらの場所を特定するための準備ができていますか? System.getPropertiesにはuser.homeとuser.dirだけが存在するため、ネイティブライブラリとのやりとりが必要だと思います。どちらもグローバルに書き込み可能ではありません。

答えて

5

c:\ ProgramDataは場所であり、これはXPのC:\ Documents and Settings \ AllUsers \ AppDataであったものを置き換えます。

javaでこれを行う方法の詳細についてはわかりませんが、環境変数ALLUSERSPROFILEを使用すると、パスを取得できます。 OSの異なる国際化バージョンではフォルダ名が変更されるため、パスをハードコーディングする代わりに、これを常に使用してください。

+0

ありがとうございました! System.getenv( "ALLUSERSPROFILE")は少なくとも私のシステム上でC:\ ProgramDataを与えているようです。 –

+1

C:\ ProgramDataを使用するには、書き込みを行うための管理者権限が必要です。下の私のポストを参照してください。 – blak3r

2

データが実際に大きい場合を除き、Preferences APIをご覧ください。特にPreferences.systemNodeForPackageである。これは、プラットフォームに依存しないシステム全体のバックエンドに依存しないストレージ機能を提供します。

1

さらに、Javaの持つこれらの場所 を決定するために、任意の準備ができて 解決策はありますか?

たとえば、%PROGRAMDATA%、%PROGRAMFILES%などの環境変数を確認できます。

5

管理者権限を持たないユーザーがグローバル設定を変更できるようにする必要がある場合は、アプリケーションのインストーラーを作成し、インストール中に「Common Application Data」フォルダーユーザーエリアに書き込むことができます。

この投稿を表示:Where to put common writable application files?

関連する問題