代码之家  ›  专栏  ›  技术社区  ›  SmacL

存在哪些替代Windows注册表来存储软件配置设置[关闭]

  •  4
  • SmacL  · 技术社区  · 16 年前

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

    SetRegistryKey("MyCompanyName");
    

    我们现在经常接到从PC和Windows版本迁移到另一个版本时遇到困难的用户的支持电话,我得出的结论是,使用注册表会导致比它解决的问题更多的问题。我也不想返回到.ini文件,因为我想存储每个用户的设置,所以计划是写我自己版本的getprofile…和setprofile…用于数据库的函数。有没有人已经这样做过,有没有人知道替换库中存在一个不需要太多代码修改的注册表使用情况?理想情况下,我还希望它有从注册表中读取初始值的选项来支持现有用户。

    7 回复  |  直到 16 年前
        1
  •  3
  •   Thomas Matthews    16 年前

    我建议移动到与可执行文件位于同一位置的XML文件。一个好处是XML可以跨非Windows计算机(甚至在Windows版本之间)进行移植。

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

        2
  •  4
  •   Cole Tobin Matt    8 年前

    Boost有一个叫做 Boost.PropertyTree 将设置抽象为层次结构。它可以序列化为许多格式,如XML、JSON和INI。

    将这些文件存储在 %APPDATA% . 将它们存储在与可执行文件相同的目录中不是一个好主意,因为 %PROGRAMFILES% 无法由上的xp的常规用户写入。

        3
  •  3
  •   Péter Török    16 年前

    不过,您可以为每个用户存储一个单独的ini文件——尽管我不知道winapi是否直接支持这个文件。至少很多应用程序都会这样做(例如 TotalCommander )

    更新: 显然,它是由API支持的。

        4
  •  2
  •   C. Ross trotttrotttrott    16 年前

    您可以构建一个类似于 .Net's Isolated Storage ,如果配置文件位于安全目录中,则可以使用 GetPrivateProfileString 访问它。

        5
  •  1
  •   Jon Benedicto    16 年前

    您可以切换到存储在用户的应用程序数据文件夹中的XML/ini配置文件,甚至可以切换到“我的文档”文件夹。这样,用户可以复制文件以保留其设置。

        6
  •  1
  •   Rob    16 年前

    我停止将注册表与上一个桌面应用程序项目一起使用,并使用存储在用户的 %APPDATA% 改为文件夹。如果您只存储字符串和整数,那么一个ini文件就可以完成这项工作,并且很容易在记事本中进行编辑。

        7
  •  0
  •   mouviciel    16 年前

    苹果用途 plist 基本上是XML的文件。