2009-06-04 5 views
6

У меня возникла проблема, когда пользователь установил свой языковой стандарт (немецкий), который отличается от того, что язык Windows был установлен как (английский). Есть ли способ узнать, какие языковые окна были установлены для использования в зависимости от того, какой язык установлен пользователем? Я должен отметить, что проблема заключается в создании Share, и я устанавливаю разрешения на основе Locale, поэтому, если пользователь установил для Locale на немецкий язык разрешение для «Everyone» - «Jeder», но если ОС настроена для английского языка, это потерпит неудачу, поскольку не является Id для «Jeder»Узнайте, какие окна были установлены как

Благодаря

+6

Обновление: значение реестра для поиска ... HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ Language \ InstallLanguage , который возвращает четырехзначный код языка. – Javamann

ответ

5

Windows имеет концепцию «UserLanguage» и «SystemLanguage». То, что вы просите, это SystemLanguage. Получите это, и у вас будет правильный ответ.

Update: Функция Win32 вы хотите GetSystemDefaultUILanguage()

Получает идентификатор языка для язык пользовательского интерфейса системы по умолчанию в операционной системы, также известный как «установить язык» на ОС Windows Vista и позже.

http://msdn.microsoft.com/en-us/library/dd318123(VS.85).aspx

Обратите внимание, что установщик Windows может запросить свойство "SystemLanguageId". (в случае, если вас интересует инстлерская точка зрения)

+0

Я использую InstallAnywhere, у которого нет доступа к SystemLanguageId. Вместо этого я могу просто выполнить вызов для поиска в реестре. – Javamann

+0

Не совсем то, что я искал, но он указал мне, где был ответ (после 40 поисковых запросов Google) – Javamann

+3

Итак, что было правильным ответом? –

0

Я полагаю, вы могли бы перечислить языковые пакеты, установленные, но не может быть в состоянии получить то, что язык был использован во время установки, если у вас нет доступа к журналы установки.

0

Зачем вам кодировать слово «все» или «джедай»? Нет ли переменной, которую вы можете проверить?

+0

Будучи окнами, я уверен, что это так. – Javamann

2

Название вопроса и сам вопрос - разные вопросы. Вы пытаетесь создать SID «Everyone», но вы идете об этом таким образом, который зависит от локали. Решение вашей проблемы заключается в том, чтобы не использовать зависящий от языка метод. Используйте API CreateWellKnownSid. На странице MSDN на CreateWellKnownSid даже есть код для создания SID каждого.

+0

Я пытаюсь установить разрешения на доступ с помощью InstallAnywhere и ограничить их параметры. Спасибо за указатель на Windows API. – Javamann