在代码中,我使用ExpandEnvironmentStrings函数来获取%USERPROFILE%的值。我甚至在德语等本地化操作系统上获得EN值。例如,我得到的值为“C \ Users \ Administrator”。但我对本地化的值感兴趣,例如c:\ Benutzer \ Administrator。
目前,我正在考虑通过传递ExpandEnvironmentStrings返回的foldername来使用SHGetFileInfo。这实际上只适用于路径的最终文件夹,在这种情况下是“管理员”而不是“用户”。要使用SHGetFileInfo,我需要打破单个文件夹中的路径,并在获取本地化值后,加入字符串。
是否有更好,更合适的方法来获得完整的本地化值?
答案 0 :(得分:1)
环境变量应该在程序启动时准确(即建立环境变量值时)。这都是ExpandEnvironmentStrings
所看到的。它不会翻译成其他语言。如果您的环境变量的值是“C:\ Users \ Administrator”,那么API将把它扩展为。
如果您想获取当前用户主目录的路径,请拨打SHGetFolderPath
或SHGetKnownFolderPath
。
答案 1 :(得分:0)
您不应该使用环境值来查找与shell相关的文件夹。您应该在XP及更早版本上使用SHGetFolderLocation和CSIDL_PROFILE,在FOLDERID_Profile上使用Vista及更高版本上的SHGetKnownFolderIDList。我相信这两个都会返回本地化的位置。