3

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

欢迎屏幕和新用户帐户设置对话框

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

4

1 回答 1

2

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

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

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

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

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

  • 尝试阅读 PreferredUILanguages
  • 如果找到,则解析为语言 ID
  • 否则,调用 GetSystemDefaultUILanguage
  • 在给定返回的语言 ID 的情况下加载适当的语言资源

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

于 2012-03-28T16:44:28.783 回答