В каком месте лучше всего хранить файл конфигурации программы в WINDOWS?

StackOverflow https://stackoverflow.com/questions/1152065

Вопрос

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

Это было полезно?

Решение

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

процитирую оттуда:

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

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

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

Итак, в заключение, файлы, хранящиеся в "LocalLow", по своей сути небезопасны, а файлы в "Local" / "Локальные настройки", вероятно, будут недоступны в некоторых крупных компаниях - поэтому, если у вас нет веской причины и вы точно знаете, что делаете, используйте "Roaming" / "Application Data".

Обновить:

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top