我最近没有为Windows编写太多代码,我发现自己现在正坐在Visual Studio中,用C ++编写一个用于Windows 7的小程序。我需要一些配置数据来读/写。
在过去,(作为一个Borland类型的人)我只是使用TIniFile并将.ini保留在我的exe旁边显然这不再是完成的事情了。 MS文档告诉我,Get / WritePrivateProfileString仅用于兼容性,我怀疑这些天我是否已经开始编写Program Files。天哪,我觉得自己老了。
我希望生成的文件易于编辑 - 在记事本中打开,很容易找到。这是一个小应用程序,我不想在编辑配置文件时编写设置屏幕。
那么,现代的做法是什么?
答案 0 :(得分:2)
人们常常使用XML文件存储首选项,但它们通常是矫枉过正的(实际上它们对人类来说并不是那么可读)。
如果您的需求很容易被INI文件所满足,您可能希望使用配置文件解析器后端Boost.Program_options,后端实际上编写类似INI的文件而不经过弃用(和慢!)API,同时展示了一个不错的C ++界面。
正确的关键是在哪里编写这样的配置文件。正确的位置通常是用户应用程序数据目录的子目录(例如,作为您的应用程序命名);拜托,请 不要在可执行文件中对其路径进行编码 ,我看到有足够多的破解应用程序无法理解用户个人资料可能不在{{ 1}}。
相反,如果您不介意失去与c:\Documents and settings\Username
的兼容性,则可以使用CSIDL_APPDATA
函数和FOLDERID_RoamingAppData
%APPDATA%
来检索应用程序数据路径Vista之前的Windows版本,甚至只是扩展{{1}}环境变量。)
通过这种方式,每个用户都可以存储其偏好设置,在编写偏好设置时不会出现任何与安全相关的错误。
答案 1 :(得分:1)
这是我的观点(我认为你得到的大部分答案都是意见),但似乎这些日子做标准的方法是在C:\Users\<Username>
中存储这些配置文件。此外,通常不要使这个目录本身混乱,而是使用子目录来存储应用程序的数据,例如C:\Users\<Username>\AppData\Roaming\<YourApplicationName>
。单个配置文件可能有点过分,但如果您添加更多,这将使您有机会将所有应用程序数据放在一个位置。