Локализованное значение из ExpandEnvironmentStrings - PullRequest
0 голосов
/ 15 марта 2011

В коде я использую функцию ExpandEnvironmentStrings, чтобы получить значение% USERPROFILE%. Я получаю значение EN даже на локализованной ОС, такой как немецкий. Например, я получаю значение как «C \ Users \ Administrator». Но меня интересует локализованное значение, например c: \ Benutzer \ Administrator.

На данный момент я рассматриваю возможность использования SHGetFileInfo, передавая имя Folderame, возвращаемое ExpandEnvironmentStrings. Это на самом деле работает только с конечной папкой пути, т.е. в данном случае «Администратор», а не «Пользователи». Чтобы использовать SHGetFileInfo, мне нужно разбить путь в отдельных папках и после получения локализованного значения объединить строки.

Есть ли лучший и более подходящий метод локализации полного значения?

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Переменная окружения должна быть точной на момент запуска вашей программы (то есть когда устанавливаются значения ее переменных окружения).Это все, на что ExpandEnvironmentStrings будет смотреть.Это не переводит на другие языки.Если значение вашей переменной среды равно «C: \ Users \ Administrator», то API-интерфейс расширит его до.

Если вы хотите получить путь к домашнему каталогу текущего пользователя, позвоните SHGetFolderPath или SHGetKnownFolderPath.

0 голосов
/ 15 марта 2011

Вы не должны использовать значения окружения для поиска папок, связанных с оболочкой. Вы должны использовать SHGetFolderLocation с CSIDL_PROFILE в XP и более ранних версиях или SHGetKnownFolderIDList в Vista и более поздних версиях с FOLDERID_Profile. Я верю, что оба они вернут локализованные локации.

...