【问题标题】:c++ win32 how to store persistent datac++ win32如何存储持久化数据
【发布时间】:2011-11-24 19:44:39
【问题描述】:

我正在开发一个 c++ win32 应用程序,我想在其中实现持久存储。我知道我可以使用文件系统、数据库或注册表,但是存储以下文件的最佳方式是:

 boolean
 unsigned int
 wchar_t [256]
 boolean [15]

只有在应用程序启动和关闭时,我才需要从存储中读取/写入。

这是一个用户级应用程序,应按用户存储数据。我想存储应用程序首选项(轨迹栏位置、一些设置、运行次数……),因此无需导入/导出设置和故障排除。

哪种存储方法最适合此类数据?

【问题讨论】:

  • 需要更多信息.. 这是用户级应用程序吗?如果是这样,数据应该在所有用户之间保持不变还是特定于用户?对于故障排除/支持,您是否需要能够使用文本编辑器编辑或读取保存的数据?您希望用户能够轻松地将数据移动到新计算机上,还是将其绑定到一个实例?

标签: c++ winapi persistent-storage


【解决方案1】:

我认为在 Windows 上编写设置的最简单方法是将它们放入注册表中。对于用户特定的设置,您将在 HKEY_CURRENT_USER 部分中写入。 Here 是 Win32 API 中注册表访问函数的完整列表。

如果您认为您需要将您的应用程序移植到其他平台,那么您可能希望了解一种更适合跨平台的解决方案。我在我的应用程序中所做的是以 Unix 方式编写设置,并在用户的主目录中使用设置文件。这还有一个额外的好处,您可以使用您(或您的用户)在必要时可以编辑的基于文本的格式,例如,您可以使用 WritePrivateProfileString 或类似的 API 调用以古老的 .ini 格式编写它。请注意,在 Windows 上,应用程序不会直接在主目录中写入设置文件,这些文件通常存放在“AppData”用户特定文件夹中。您可以通过调用SHGetFolderPath函数获取该文件夹的路径。

【讨论】:

  • 注册表项的通常约定是HKEY_CURRENT_USER\Software\CompanyName\AppName
【解决方案2】:

只考虑序列化/protobuffer:http://code.google.com/p/protobuf/ 您写入应用程序的某些用户特定路径的位置

【讨论】:

    【解决方案3】:

    最简单的解决方案是将信息存储在用户APPDATA path下的.ini file中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-30
      • 2017-07-05
      • 1970-01-01
      • 2012-09-06
      • 2022-01-22
      • 1970-01-01
      • 2013-10-19
      • 2012-12-01
      相关资源
      最近更新 更多