0

在代碼中,我使用ExpandEnvironmentStrings函數來獲取%USERPROFILE%的值。即使在德語等本地化操作系統上,我也能獲得EN值。例如,我將值作爲「C \ Users \ Administrator」。但我對本地化值感興趣,例如c:\ Benutzer \ Administrator。ExpandEnvironmentStrings的本地化值

現在,我正在考慮通過傳遞由ExpandEnvironmentStrings返回的文件夾名來使用SHGetFileInfo。這實際上只適用於路徑的最終文件夾,即本例中的「管理員」,而不是「用戶」。要使用SHGetFileInfo,我需要中斷個別文件夾中的路徑,並在獲得本地化的值後,加入字符串。

是否有更好和更合適的方法來獲得完整的值本地化?

+0

您能否更準確地解釋您的目標是什麼以及如何歸檔目標。你目前混合不同的東西。你是否需要在計算機上獲取所有用戶配置文件,需要當前用戶的文件夾。是否在您的環境中使用中央配置文件(保存在服務器上)?你的意思是'SHGetSpecialFolderPath','SHGetFolderPath'或'SHGetKnownFolderPath'而不是'SHGetFileInfo'可能嗎? – Oleg 2011-03-15 16:58:46

回答

0

您不應該使用環境值來查找與shell相關的文件夾。在XP和更低版本上,您應該使用SHGetFolderLocation和CSIDL_PROFILE,或者在Vista和更高版本上使用SHGetKnownFolderIDList和FOLDERID_Profile。我相信這些都會返回本地位置。

1

環境變量在程序啓動時(當環境變量的值已建立時)應該是準確的。這是所有ExpandEnvironmentStrings將看。它不會翻譯成其他語言。如果環境變量的值是「C:\ Users \ Administrator」,那麼這就是API將它擴展到的值。

如果要獲取當前用戶主目錄的路徑,請致電SHGetFolderPathSHGetKnownFolderPath