2009-06-04 67 views
6

我有一個問題,其中用戶設置的語言環境(德語)與語言Windows的安裝方式不同(英語)。有沒有一種方法可以發現哪些語言窗口被安裝使用與用戶設置的區域設置? 我應該注意的問題是我正在創建一個共享,我根據語言環境設置權限,因此如果用戶已將語言環境設置爲德語,則「Everyone」的權限爲「Jeder」,但如果操作系統設置爲英語將失敗,因爲不是「Jeder」這個ID找出語言窗口被安裝爲

感謝

+6

更新:要查找的註冊表值是... HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ Language \ InstallLanguage 它返回一個四位數字的語言代碼。 – Javamann 2009-06-04 23:09:25

回答

5

Windows具有「UserLanguage」和「SystemLanguage」的概念。你要求的是SystemLanguage。明白了,你會得到正確的答案。

更新:你想要的Win32函數是GetSystemDefaultUILanguage()

檢索語言標識符 的 操作系統的系統默認UI語言,也被稱爲 「安裝語言」在Windows Vista 及更高版本。

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

注意,Windows安裝程序可以查詢屬性 「SystemLanguageId」。 (如果你從經銷商的角度來看感興趣)

+0

我正在使用InstallAnywhere,它似乎沒有訪問SystemLanguageId的權限。我可以只做註冊表查詢調用。 – Javamann 2009-06-04 23:10:39

+0

不是我正在尋找的東西,但它指出我的答案在哪裏(經過40次谷歌搜索) – Javamann 2009-06-04 23:13:42

+3

那麼正確的答案是什麼? – 2011-06-09 08:14:44

0

我想你可以枚舉安裝的語言包,但可能無法檢索過程中使用,除非你有機會到安裝什麼語言安裝日誌。

0

你爲什麼要對單詞「Everyone」或「Jeder」進行編碼?沒有可以檢查的變量嗎?

2

問題的標題和問題本身是不同的問題。您正在嘗試創建一個「Everyone」SID,但是您將以某種取決於語言環境的方式來解決此問題。解決您的問題是不使用區域依賴的方法。使用CreateWellKnownSid API。 CreateWellKnownSid上的MSDN頁面甚至包含用於創建Everyone SID的代碼。