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

时间:2016-05-17 07:08:34

标签: windows environment-variables windows-xp windows-vista

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

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

1 个答案:

答案 0 :(得分:3)

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

在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”)的新文件夹中,可以找到{ {1}}。 CSIDL_COMMON_APPDATA还有一个名为%PUBLIC%的环境变量,并且由于大多数其他文件夹已移至%ProgramData%,因此确定%PUBLIC%不需要Application Data子文件夹,因此%ALLUSERSPROFILE%是与%ProgramData%相同。

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

我的建议是,如果它存在则使用%ALLUSERSPROFILE%,否则,请回到%ProgramData%。我不知道Application Data文件夹在Windows的本地化版本上是否有不同的名称......

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

使用SHGetFolderPath

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

使用Environment.SpecialFolder