我正在开发一个 c++ win32 应用程序,我想在其中实现持久存储。我知道我可以使用文件系统或数据库或注册表,但是存储以下内容的最佳方法是什么:
boolean
unsigned int
wchar_t [256]
boolean [15]
只有在应用程序启动和关闭时,我才需要从存储中读取/写入。
这是一个用户级应用程序,数据应按用户存储。我想存储应用程序首选项(轨迹栏位置、一些设置、运行次数……),因此无需导入/导出设置和故障排除。
哪种存储方法最适合此类数据?
我正在开发一个 c++ win32 应用程序,我想在其中实现持久存储。我知道我可以使用文件系统或数据库或注册表,但是存储以下内容的最佳方法是什么:
boolean
unsigned int
wchar_t [256]
boolean [15]
只有在应用程序启动和关闭时,我才需要从存储中读取/写入。
这是一个用户级应用程序,数据应按用户存储。我想存储应用程序首选项(轨迹栏位置、一些设置、运行次数……),因此无需导入/导出设置和故障排除。
哪种存储方法最适合此类数据?
我认为在 Windows 上编写设置的最简单方法是将它们放入注册表中。对于用户特定的设置,您将在 HKEY_CURRENT_USER 部分中写入。这是 Win32 API 中注册表访问函数的完整列表。
如果您认为您将需要将您的应用程序移植到其他平台,那么您可能希望查看一个更跨平台友好的解决方案。我在我的应用程序中所做的是以 Unix 方式编写设置,并在用户的主目录中使用设置文件。这还有一个额外的好处,即您可以使用您(或您的用户)在必要时可以编辑的基于文本的格式,例如,您可以使用WritePrivateProfileString或类似的 API 调用以古老的 .ini 格式编写它。请注意,在 Windows 上,应用程序不会直接在主目录中写入设置文件,这些文件通常存放在“AppData”用户特定文件夹中。您可以通过调用SHGetFolderPath函数获取该文件夹的路径。
最简单的解决方案是将信息存储在用户APPDATA 路径下的.ini 文件中。
只考虑序列化/protobuffer:http://code.google.com/p/protobuf/ ,您可以 在其中写入应用程序的某些用户特定路径