2009-06-04 29 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的代码。