Something rather strange crept up today and its do to with non-Unicode language settings in Windows 7 which weren’t working properly. Basically some of our printers didn’t print barcodes properly and after some extensive troubleshooting the culprit was language in Windows that was set to English (United States) instead of English (United Kingdom) You can find system locale settings for non-Unicode programs under:
1 |
<strong>Control Panel --> Region and Language --> Administrative tab --> Change system locale...</strong> |
Looking at what happens when you switch from English (United States) to English (United Kingdom) from registry point of view I can see the following changes being made:
In Regedit language here’s the code that you need to distribute to make this change in mass:
1 2 3 4 5 6 7 8 9 10 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] "OEMCP"="850" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language] "Default"="0809" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale] "(Default)"="00000809" |
Most annoying fact here is that there are no group policy settings to make this a little bit easier to deploy. Group policy preferences however are doing pretty decent job:
Pingback: Language for Non-Unicode Programs
These instructions need a small correction to make them work.
The following value name is (Default) and that is not the #3 value shown on the last screenshot in GPP.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale]
“(Default)”=”00000809”
It’s not fault – it’s feature. Checked on some systems – there are two keys under Nls\Locale:
empty one (in reg file named as @) and with name “(Default)”.
Control panel page make changes only in key with name “(Default)” – keeping empty named key unchanged.
reg query HKLM\System\CurrentControlSet\Control\Nls\Locale /ve
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale
(Default) REG_SZ 00000409
reg query HKLM\System\CurrentControlSet\Control\Nls\Locale /v “(Default)”
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale
(Default) REG_SZ 00000409
so, reg file should look like:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale]
@=”00000809″
“(Default)”=”00000809”
Tried this several times and in several ways, it never changes it from US to whatever locale I try to set. in a VDI environment this may not be possible.