获取Windows启动消息的语言

时间:2012-03-27 11:30:01

标签: c++ windows winapi mui

我目前正试图了解MUI,并解决GetSystemDefaultUILanguage的一些问题 - 它没有返回我期望的语言:

Welcome screen and new user accounts settings dialog

用户可以在“欢迎屏幕和新用户帐户设置”对话框中设置用于Windows启动消息的语言 - 该对话框声称将语言设置复制到系统帐户。因此,我希望能够使用GetSystemDefaultUILanguage获取启动消息所使用的语言 - 但似乎只能使用最初安装操作系统的语言。如何获取启动消息语言?

1 个答案:

答案 0 :(得分:2)

GetSystemDefaultUILanguage似乎返回最初安装操作系统的语言。在2K8 R2中至少(可能还有其他后Vista操作系统)用户可以修改用于启动消息的语言 - 但遗憾的是,这不会通过GetSystemDefaultUILanguage反映出来。

然而,可以通过注册表查找它。以下值存储语言的文本描述(例如en-US):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\Settings\PreferredUILanguages

此值似乎仅在安装了多种语言的计算机上设置(并且可能仅在用户更改了欢迎屏幕语言时)。

因此,要获取当前的欢迎屏幕语言,流程似乎是:

  • 尝试阅读PreferredUILanguages
  • 如果找到,则解析为语言ID
  • 否则,请致电GetSystemDefaultUILanguage
  • 根据返回的语言ID
  • 加载适当的语言资源

如果我们在启动时没有尝试用不同的语言显示内容,那就不会那么痛苦了!通常你可以使用GetUserDefaultUILanguage。