Windows XP 和 Vista+ 中 %ALLUSERSPROFILE% 的差异

Differences in %ALLUSERSPROFILE% in Windows XP and Vista+

Windows中是否有环境变量指示存放所有用户共享的应用程序数据的文件夹?

在 Windows Vista 及更高版本中,这是 %ALLUSERSPROFILE%(通常映射到 C:/ProgramData)。但是在 Windows XP 中,%ALLUSERSPROFILE% 映射到 C:\Documents and Settings\All Users,我仍然需要添加类似 \Program Data\ 的内容才能到达等效位置。

我不知道批处理文件的好的解决方案,但我可以解释历史。

On Windows 2000/XP/2003 %ALLUSERSPROFILE% 正是它的名字,all-users/shared/common 配置文件目录的根目录。通常 "C:\Documents and Settings\All Users".

Windows shell 有一个名为 CSIDL_COMMON_APPDATA 的特殊文件夹常量,它通常解析为 "C:\Documents and Settings\All Users\Application Data" 但不幸的是,这些路径上没有为此路径设置环境变量系统。

在 Windows Vista 及更高版本中,文档、音乐和视频文件夹已从 %ALLUSERSPROFILE% 文件夹中移出,并放置在名为 Public 的新文件夹中("c:\Users\Public" ) 并且可以通过 %PUBLIC% 找到。 CSIDL_COMMON_APPDATA 还获得了一个名为 %ProgramData% 的环境变量,并且由于大多数其他文件夹已移至 %PUBLIC%,因此决定 %ALLUSERSPROFILE% 不需要 Application Data 子文件夹,因此 %ProgramData%%ALLUSERSPROFILE%.

相同

如果您正在编写批处理文件:

我的建议是,如果存在 %ProgramData%,则使用 %ProgramData%,否则,退回到 %ALLUSERSPROFILE%\Application Data。我不知道 Application Data 文件夹在 Windows...

的本地化版本中是否有不同的名称

如果您正在编写 C/C++ 应用程序:

使用SHGetFolderPath.

如果您正在编写 .NET 应用程序:

使用Environment.SpecialFolder.