ExpandEnvironmentStrings中的本地化值

时间:2011-03-15 16:40:30

标签: c++ winapi internationalization filesystems environment-variables

在代码中,我使用ExpandEnvironmentStrings函数来获取%USERPROFILE%的值。我甚至在德语等本地化操作系统上获得EN值。例如,我得到的值为“C \ Users \ Administrator”。但我对本地化的值感兴趣,例如c:\ Benutzer \ Administrator。

目前,我正在考虑通过传递ExpandEnvironmentStrings返回的foldername来使用SHGetFileInfo。这实际上只适用于路径的最终文件夹,在这种情况下是“管理员”而不是“用户”。要使用SHGetFileInfo,我需要打破单个文件夹中的路径,并在获取本地化值后,加入字符串。

是否有更好,更合适的方法来获得完整的本地化值?

2 个答案:

答案 0 :(得分:1)

环境变量应该在程序启动时准确(即建立环境变量值时)。这都是ExpandEnvironmentStrings所看到的。它不会翻译成其他语言。如果您的环境变量的值是“C:\ Users \ Administrator”,那么API将把它扩展为。

如果您想获取当前用户主目录的路径,请拨打SHGetFolderPathSHGetKnownFolderPath

答案 1 :(得分:0)

您不应该使用环境值来查找与shell相关的文件夹。您应该在XP及更早版本上使用SHGetFolderLocation和CSIDL_PROFILE,在FOLDERID_Profile上使用Vista及更高版本上的SHGetKnownFolderIDList。我相信这两个都会返回本地化的位置。