Windows 获得用户';控制面板中的首选语言列表?
在Windows 10的“语言设置”控制面板中(以及旧版本——这似乎是在Win8中引入的?)有一个“首选语言”列表。以编程方式获取该列表的正确方法是什么 我可以看到它存储在注册表中的Windows 获得用户';控制面板中的首选语言列表?,windows,winapi,localization,globalization,Windows,Winapi,Localization,Globalization,在Windows 10的“语言设置”控制面板中(以及旧版本——这似乎是在Win8中引入的?)有一个“首选语言”列表。以编程方式获取该列表的正确方法是什么 我可以看到它存储在注册表中的HKEY\U CURRENT\U USER\Control Panel\International\USER Profile\Languages,但我认为它不是直接读取的 我发现了一个API,它听起来是正确的,但是它返回了错误的结果 具体来说,在控制面板和注册表项中,我当前拥有列表en NZ en US it,但AP
HKEY\U CURRENT\U USER\Control Panel\International\USER Profile\Languages
,但我认为它不是直接读取的
我发现了一个API,它听起来是正确的,但是它返回了错误的结果
具体来说,在控制面板和注册表项中,我当前拥有列表en NZ en US it
,但API返回en GB
en US
。我不知道这是从哪里来的。(或者为什么意大利语不见了。)
API确实正确地返回了en NZ
,但它似乎也是从其他地方得到的——当我在控制面板中重新排列语言列表时,注册表会更新,但API返回值不会更改
我想要完整的语言列表,而不仅仅是一个答案。(另外,出于好奇,API从哪个控制面板获得答案?可能需要注意的是,如果我在PowerShell中运行,那么它会正确报告与控制面板匹配的语言列表。然而,这不是我想要的那种API。我没有尝试过
EnumUILanguages
(正如现在删除的注释所建议的那样),因为它的文档中没有一个表示它将按优先顺序返回值。事实上,结果似乎是en GB
en US
——这稍微好一点,至少意大利语看起来是这样的,但即使我把意大利语作为首选语言列表中的第一语言,它仍然是按这个顺序出现的。而且它仍然在说<代码> Engb>代码>而不是<代码> EN NZ < /Cord>。对你有用吗?我不这么认为。我想从非托管C++(MFC)和C语言(.NET框架)中获取值,这两个值都来自常规桌面应用程序。我不想对Win8LIBS有一个硬依赖,在德雷克的链接工作中,WiR.API中可能有一些Win7用户,用于C++和C语言,还有桌面应用程序,它们被标记为“通用语言”。但它只能在Windows10上运行。对于其他系统,您是否尝试过EnumUILanguages(适用于我):