Как указывает @David, вы можете использовать реестр, файлы или, естественно, их комбинацию.
Если вы обращаетесь к файлам, вы должны хранить их в текущей пользовательской части файловой системы. Действительно, это фундаментальный принцип, согласно которому один пользователь не должен влиять на любого другого пользователя системы, и Windows применяет это (например, вы не можете сохранять файлы в каталоге Program Files при работе без повышенных привилегий 1 ) .
Например, мое программное обеспечение AlgoSim может сохранять свои настройки в
C:\Users\Andreas Rejbrand\AppData\Roaming\Rejbrand\AlgoSim\2.0
папка. Это типичный пример. Вы получаете первую часть каталога, то есть
C:\Users\Andreas Rejbrand\AppData\Roaming
, запрашивая у операционной системы папку данных приложения для пользователя. Вы можете использовать функцию SHGetKnownFolderPath
, чтобы найти это. Используйте FOLDERID_RoamingAppData
идентификатор папки. Если вам требуется поддержка более старых версий Windows, вы можете вместо этого использовать SHGetFolderPath
и использовать константу CSIDL_APPDATA
.
Остальная часть пути обычно следует шаблону
Manufacturer Name\Product Name\Product Version
Какие файлы хранить? Ну, самый простой способ - использовать устаревшие INI-файлы, но вы также можете использовать XML, текстовые файлы в вашем собственном формате или даже двоичные файлы вашего собственного дизайна.
Второй подход - использовать реестр вместо файлов. Вы, наверное, уже знаете, как это сделать. Если нет, вы легко узнаете это из примеров. Например, я могу сохранить настройки для каждого пользователя в
HKEY_CURRENT_USER\Software\Rejbrand\AlgoSim\2.0
1 В этом случае операционная система достаточно умна, чтобы «эмулировать» папку «Program Files» для каждого пользователя. В то время как программа считает , что она читает и записывает в папку Program Files, она фактически читает и записывает в папку в текущей части файловой системы пользователя. Таким образом, старые приложения с плохим поведением продолжают работать даже в более новых версиях операционной системы Microsoft Windows, и, кроме того, они начинают поддерживать настройки для каждого пользователя, что они должны были сделать в первую очередь. Я действительно думаю, что это главный +1 для Microsoft, как я мог бы сказать раньше.