В каком месте лучше всего хранить файл конфигурации программы в WINDOWS? - PullRequest
1 голос
/ 20 июля 2009

Моя программа требует, чтобы некоторые детали конфигурации были сохранены в файле .ini. Эта программа также устанавливает расширения для IE и Firefox, и я хочу прочитать эти INI-файлы из этих расширений. Если я сохраню .ini в «... AppData / Roaming ...», расширение IE в защищенном режиме не сможет читать / писать. Насколько я знаю, только AppData / LocalLow могут читать только в защищенном режиме. Если я перенесу все свои данные конфигурации в это «... AppData / LocalLoe ...», это будет работать все время? Это стандартный способ? все, что я написал, в контексте Vista, будет ли работать с XP? Win7

Ответы [ 2 ]

0 голосов
/ 20 июля 2009

См. Мой ответ на этот вопрос: Как решить, где хранить состояние пользователя? Реестр? Данные приложения? Изолированное хранилище?

Цитировать оттуда:

Файлы в пользовательской папке «Roaming» в Vista или «Application Data» в XP перемещаются вместе с пользователем - поэтому любые настройки и данные должны храниться там.

Файлы в разделах «Local» и «LocalLow» в Vista и «Local Settings» в XP этого не делают, поэтому это хорошее место для временных файлов, вещей, привязанных к конкретному компьютеру, или данных, которые можно пересчитать.

В Vista, как часть новых функций безопасности, которые мы все знаем и любим, у вас могут быть программы, запущенные в «режиме низкой целостности» (например, IE в защищенном режиме), эти программы работают с ограниченными привилегиями и не могут доступ к файлам в профиле пользователя - за исключением файлов в папке «LocalLow».

Итак, в заключение, файлы, хранящиеся в «LocalLow», изначально небезопасны, а файлы в «Local» / «Local Settings», скорее всего, будут недоступны в некоторых крупных компаниях - поэтому, если у вас нет веских причин и точно знать, кто вы происходит с «Роуминг» / «Данные приложения».

ОБНОВЛЕНИЕ:

  1. Когда используется профиль в роуминге (среда большого сотрудничества), содержимое Local и LocalLow может (и будет) исчезать без уведомления.
  2. Это все настройки для каждого пользователя, если ваш сервер работает под другой учетной записью, чем пользователь (например, система или сеть), они получат разные копии этих папок.
0 голосов
/ 20 июля 2009

Чтобы получить путь к папке с данными программы, вы должны использовать WinAPI:

wchar_t path_buf[MAX_PATH];
SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0] );

В Windows Vista функция SHGetFolderPath была заменена на SHGetKnownFoldedPath . Эта старая функция теперь является просто оболочкой для SHGetKnownFolderPath.

...