Где разместить глобальные данные приложений в Vista? - PullRequest
3 голосов
/ 15 апреля 2009

Где в системе Windows (Vista) я должен разместить данные, которые должны быть доступны для чтения и для записи всем, то есть каждому пользователю компьютера? Концепции C: \ Users \ xxx \ AppData \ что-то в Vista, каталоги C: \ Program Files, C: \ ProgramData и UAC немного сбивают с толку.

Кроме того, есть ли готовое решение для определения этих мест с помощью Java? Я полагаю, что это требует некоторого взаимодействия с нативными библиотеками, поскольку System.getProperties имеет только user.home и user.dir, ни один из которых не доступен для глобальной записи.

Ответы [ 4 ]

5 голосов
/ 20 мая 2009

Если вам нужно разрешить пользователям, не имеющим привилегий администратора, изменять глобальные настройки, тогда правильным подходом будет создание установщика для приложения, и во время установки установите разрешения для папки «Общие данные приложения» так, чтобы пользователи площадь разрешено писать в него.

См. Этот пост: Где разместить общие записываемые файлы приложения?

5 голосов
/ 15 апреля 2009

В Vista c: \ ProgramData это место, которое заменяет то, что раньше было C: \ Documents and Settings \ AllUsers \ AppData в XP.

Я не уверен в специфике выполнения этого в Java ... но переменная окружения ALLUSERSPROFILE дает вам путь, если вы можете получить это. Вы должны всегда использовать это вместо жесткого кодирования пути, потому что имя папки изменяется в разных интернационализированных версиях ОС.

2 голосов
/ 15 апреля 2009

Если данные не очень большие, вы можете взглянуть на Preferences API ; в частности Preferences.systemNodeForPackage. Это дает вам независимое от платформы, общесистемное, независимое от системы хранилище, если вы к этому стремитесь.

1 голос
/ 15 апреля 2009

Кроме того, есть ли готовый решение для определения этих мест с Java?

Вы можете проверить переменные окружения approrpirate, например% PROGRAMDATA%,% PROGRAMFILES% и другие.

...