微软是否有关于在不同的Windows平台上存储应用数据与用户数据的最佳实践文档?

22

在创建一个将针对多个Windows版本的应用程序时,确定应用程序特定数据存储位置的最佳实践是什么?具体来说:

  • 应用程序特定数据(例如应用程序配置数据)
  • 用户特定数据/设置

我知道在Windows Vista上,有环境变量,如%APPDATA%,可以使用,但在Windows 7、Windows XP、Windows 98中怎么办。

我的主要问题是,Microsoft是否有一份最佳实践文档,概述了不同类型数据(应用程序与用户)的文件系统位置以及在读写这些位置时需要考虑的安全性问题?

我还对此如何涉及非托管C/C++应用程序感兴趣,而不仅仅是.NET应用程序(其中可以利用ApplicationSettingsBase)。

感谢Pax和Remus提供的两个好答案。我也找到了这个项目(特定于XP):

如何编写 Windows XP 应用程序,使用 Visual C++ 将用户和应用程序数据存储在正确的位置

2个回答

9

这里有一个很好的描述介绍了各种CSIDL值及其所引用的文件夹(包括一个描述,希望能告诉你需要知道的内容)。

它还包含了链接到应该使用的函数来检索这些特殊文件夹路径。

请注意,从Vista开始,方法已经稍作更改。现在使用KNOWNFOLDERID代替CSIDL,函数也发生了变化。请参见此处

目前仍然可以使用旧函数(因为我相信它们现在只是新函数的包装器)。在将来的某个时候,这可能会改变。


9
这些通常在Windows软件徽标计划中描述。链接指向Windows 7徽标要求文档,但类似的文档也适用于XP、Windows 2003、Vista和Windows 2008。在技术要求部分,您将找到一些您正在寻找的信息:

所有必须在计算机上共享用户的应用程序数据应存储在ProgramData中。

所有专属于特定用户且不与计算机其他用户共享的应用程序数据必须存储在Users\<username>\AppData中。

在“每台计算机”安装中,用户数据必须在第一次运行时写入,而不是在安装期间写入。这是因为在安装时没有正确的用户位置来存储数据。

编辑:

如果你是Windows 10用户,请查看 Windows桌面应用程序认证要求(第10节)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接