Вопрос

Я ищу приемлемую отправную точку для размещения настроек приложений на компьютере с 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 для данных, не находящихся в роуминге (данные, которые не должны копироваться по сети при входе пользователя на другой компьютер).

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