2009-04-15 2 views
3

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

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

ответ

5

В vista c: \ ProgramData - это место, это заменяет используемое в C: \ Documents and Settings \ AllUsers \ AppData в XP.

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

+0

Спасибо! Кажется, что System.getenv («ALLUSERSPROFILE») дает C: \ ProgramData в моей системе, по крайней мере. –

+1

C: \ ProgramData требует, чтобы у пользователя были права администратора для записи. См. Мой пост ниже. – blak3r

2

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

1

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

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

5

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

Посмотреть это сообщение: Where to put common writable application files?

Смежные вопросы