куда поместить файлы инициализации в Windows
-
12-09-2019 - |
Вопрос
Я ищу приемлемую отправную точку для размещения настроек приложений на компьютере с Windows.У меня есть более одного приложения.по личным причинам я бы не хотел использовать реестр:Я предпочитаю обычные текстовые файлы инициализации (.ini).Мне также не хочется хранить файлы в том же каталоге, что и исполняемые файлы, идеальная ситуация позволяет мне хранить их где-нибудь в общем месте, где пользователям или системным администраторам разрешено писать.
верно, я не пользователь Windows, мое первое предположение было бы $HOME/.my_company_name
и /etc/my_company_name
, но есть ли что-то концептуально эквивалентное этим местам в Windows?
просто заглядывая в SET
вывод и угадывание:
%APPDATA% %HOMEDRIVE%%HOMEPATH%\Local Settings %SYSTEMROOT%
кстати:Я все еще должен проверить, существуют ли эти переменные по-прежнему внутри службы Windows...
Решение
Я думаю, AppData - это то, что вам нужно.
Вы можете использовать SHGetFolderPath (из SHFOLDER.DLL), чтобы получить это программно.
От MSDN "Управление данными и настройками" (смотрите раздел 4.2 "Правильная классификация и хранение данных приложения"):
TCHAR szAppData[MAX_PATH];
…
hr = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szAppData);
Добавить [company name]\[product name]\[version]
к szAppData с помощью Путь к успеху:
PathAppend(szAppData, "Company\Product\1.0\File.ini")
Существует также CSIDL_COMMON_APPDATA
для данных, не относящихся к конкретному пользователю, и CSIDL_LOCAL_APPDATA
для данных, не находящихся в роуминге (данные, которые не должны копироваться по сети при входе пользователя на другой компьютер).