存在Windows注册表的替代方法来存储软件配置设置

Sma*_*acL 6 c++ registry mfc

我有一个C ++ MFC应用程序,它将其所有系统范围的配置设置存储到注册表中。以前,我们使用.INI文件,并在几年前改为使用注册表

SetRegistryKey("MyCompanyName");
Run Code Online (Sandbox Code Playgroud)

现在,我们很难获得从PC和Windows版本迁移到另一个版本的用户的定期支持电话,而我得出的结论是,使用注册表会导致更多的问题而不是解决的问题。我也不想返回.INI文件,因为我想存储每个用户的设置,因此计划是编写自己的GetProfile ...和SetProfile ...函数版本,以便与数据库。是否有人已经这样做了,并且有人知道不需要过多修改代码即可替换注册表的现有替换库吗?理想情况下,我还希望它具有从注册表中读取初始值以支持现有用户的选项。

Roe*_*oel 5

Boost有一个称为的库Boost.PropertyTree,可将设置抽象为分层结构。它可以序列化为多种格式,例如XML,JSON和INI。

将这些文件存储在中%APPDATA%。将它们与可执行文件存储在同一目录中不是一个好主意,因为%PROGRAMFILES%XP以后的普通用户无法将其写入。


Tho*_*ews 4

我建议移至与可执行文件位于同一位置的 XML 文件。优点之一是 XML 可跨非 Windows 计算机(甚至 Windows 版本之间)移植。

编辑:与可执行文件位于同一位置的 XML 配置文件背后的想法是,配置文件用于程序配置(而不是用户)和封装/数据隐藏(不污染全局文件系统目录)。用户配置数据应该位于用户或用户选择的目录中的另一个文件中。

  • -1 除非您的应用程序不会安装到 Program Files 目录,否则您将在写入 XML 文件时遇到权限问题。Windows 非管理员帐户以及启用 UAC 的安装会阻止写入程序文件。配置文件应位于用户的应用程序数据目录中。 (9认同)