2011-09-25 32 views
0

我正在开发一个C++ win32应用程序,我想实现持久化存储。我知道我可以使用的文件系统或数据库或注册表,但什么是用于存储的最佳方法:我需要阅读从存储/写,只有当应用程序启动和关闭C++ win32如何存储持久性数据

boolean 
unsigned int 
wchar_t [256] 
boolean [15] 

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

哪种存储方法最适合这种类型的数据?

+0

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

+0

更新了我的问题 – blejzz

回答

4

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

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

+0

注册表项的常规约定是'HKEY_CURRENT_USER \ Software \ CompanyName \ AppName'。 –