当创build一个针对多个Windows版本的应用程序时,确定存储应用程序特定数据的最佳实践是什么。 特别:
我知道在Windows Vista上有可以使用的环境variables,比如%APPDATA%,但是Windows 7,Windows XP,Windows 98呢。
我的主要问题是,Microsoft是否有一个最佳实践文档为此,概述了不同types的数据(应用程序与用户)的文件系统位置以及在读取/写入这些位置时需要牢记的安全隐患?
我也感兴趣的不仅是.NET应用程序(其中可以使用ApplicationSettingsBase),而且也适用于非托pipeC / C ++应用程序。
感谢Pax和Remus这两个伟大的答案。 我也发现这个项目(具体到XP):
如何编写Windows XP应用程序,通过使用Visual C ++将用户和应用程序数据存储在正确的位置
这里有很多关于各种CSIDL值及其引用的文件夹的描述(包括一个描述,希望能告诉你你需要知道什么)。
它还包含您应该用来检索这些特殊文件夹路径的功能的链接。
请注意,截至Vista,方法已经改变了一些。 它现在使用KNOWNFOLDERID
而不是CSIDL
,功能也改变了。 看到这里 。
你仍然可以使用旧功能(目前),因为我相信他们现在只是对新功能的封装。 在未来的某个时候,这可能会改变。
这些通常在Windows软件徽标程序中描述(链接中断) 。 链接是Windows 7徽标需求文档,但XP,Windows 2003,Vista和Windows 2008存在类似的文档。在“技术要求”部分,您可以找到一些您正在寻找的信息:
所有必须在计算机上的用户之间共享的应用程序数据应存储在
ProgramData
所有专用于特定用户且不与计算机的其他用户共享的应用程序数据必须存储在
Users\<username>\AppData
在“每台机器”安装中,用户数据必须在第一次运行时写入,而不是在安装期间。 这是因为在安装时没有正确的用户位置来存储数据。
编辑:
Windows 10用户,请查看Windows桌面应用程序的认证要求(第10节)