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

Gro*_*uez 2 windows windows-xp environment-variables windows-vista

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

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

And*_*ers 6

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

在 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%如果存在就使用,否则回退到%ALLUSERSPROFILE%\Application Data. 我不知道 Application Data 文件夹在本地化版本的 Windows 上是否有不同的名称...

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

使用SHGetFolderPath

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

使用Environment.SpecialFolder