by Michael S. Kaplan, published on 2009/09/15 10:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2009/09/15/9894707.aspx
Apologies for the title (note to self: never author blog titles under the influence to try to appear as a cunning linguist!)
So it was just the other day that Yong asked:
Ok, so it looks like we got a regression (or a design change) on Vista/Windows 7 from Windows XP.
On XP/W2K3:
============Start of regopts.txt============
[RegionalSettings]
InputLocale = 0409:00000409,0404:E0020404
============End of regopts.txt============
// Just having this adds for example the Chinese Traditional (ChangJie) keyboard.On Windows Vista SP2/W2K8 SP2
============Start of regopts.xml============<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<!-- User List-->
<gs:UserList>
<gs:User UserID="Current" CopySettingsToSystemAcct="true" />
</gs:UserList>
<!--System locale-->
<gs:SystemLocale Name="zh-TW"/><gs:InputPreferences>
<!--en-US-->
<gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/>
<!--zh-TW-ChangJie-->
<gs:InputLanguageID Action="add" ID="0404:E0020404"/>
</gs:InputPreferences></gs:GlobalizationServices>
============End of regopts.xml============
It fails with:Unexpected Failure. Unsupported parameter.
On Windows 7/W2K8 R2.
It fails with:
Event ID: 10008
Source: International
Error while changing keyboard/input method for "0404:E0020404".
This is one of those architected backcompat breaks that was put in -- GUIDs were now needed, to replace the "fake" KLID values of prior versions that would forward to the appropriate Text Services Framework TIPs (which had been around for several versions, often atop the same KLID values that the older IMM based variants of IME that they replaced used to be on).
It amazed me that after all this time no one had still seemed to have published the list of the GUIDs so that people could replace existing scripts!
In fact, no one had asked me if such a list existed, really.
Which is odd since that is the sort of question I do tend to get a lot.
Anyway, I thought I would just take care of that now.
Here is the big table, with the old and new values:
LANGID | XP/Server 2003 KLID | Language/Script | Input method description | Vista/Windows 7 |
0411 | 00000411 | Japanese | Japanese keyboard | No Change |
0411 | E0010411 | Japanese | Japanese IME | {03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76} |
0412 | E0010412 | Korean | Korean IME | {A028AE76-01B1-46C2-99C4-ACD9858AE02F}{B5FE1F02-D5F2-4445-9C03-C568F23C99A1} |
0412 | 00000412 | Korean | Korean keyboard | No Change |
0404 | 00000404 | Traditional Chinese | US Keyboard | No Change |
0804 | 00000804 | Simplified Chinese | US Keyboard | No Change |
0404 | E0010404 | Traditional Chinese | Phonetic | {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{761309DE-317A-11D4-9B5D-0080C882687E} |
0804 | E0010804 | Simplified Chinese | QuanPin | {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{54FC610E-6ABD-4685-9DDD-A130BDF1B170} |
0404 | E0020404 | Traditional Chinese | ChangJie | {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{4BDF9F03-C7D3-11D4-B2AB-0080C882687E} |
0804 | E0020804 | Simplified Chinese | ShuangPin | {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{EF63706D-31C4-490E-9DBB-BD150ADC454B} |
0404 | E0030404 | Traditional Chinese | Quick | {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{6024B45F-5C54-11D4-B921-0080C882687E} |
0404 | Did not exist?!? | Traditional Chinese | New Quick | {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{0B883BA0-C1C7-11D4-87F9-0080C882687E} |
0804 | E0030804 | Simplified Chinese | ZhengMa | {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{733B4D81-3BC3-4132-B91A-E9CDD5E2BFC9} |
0404 | E0040404 | Traditional Chinese | Big5 | REMOVED |
0404 | E0050404 | Traditional Chinese | Array | {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{D38EFF65-AA46-4FD5-91A7-67845FB02F5B} |
0804 | E0050804 | Simplified Chinese | NeiMa | REMOVED |
0404 | E0060404 | Traditional Chinese | DaYi | {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{037B2C25-480C-4D7F-B027-D6CA6B69788A} |
0404 | E0070404 | Traditional Chinese | Unicode | REMOVED |
0404 | e0080404 | Traditional Chinese | New Phonetic | {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{B2F9C502-1742-11D4-9790-0080C882687E} |
0404 | e0090404 | Traditional Chinese | New ChangJie | {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{F3BA907A-6C7E-11D4-97FA-0080C882687E} |
0804 | E00E0804 | Simplified Chinese | PinYin | {81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{F3BA9077-6C7E-11D4-97FA-0080C882687E} |
0404 | E01F0404 | Traditional Chinese | Alphanumeric (ABC) | {81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FCA121D2-8C6D-41fb-B2DE-A2AD110D4820} |
A few quick words about this table.
Note that this information is mostly useless to you but does explain why all of the IMEs that use TextTableService.DLL have the same GUID for the first one -- you can use this imnformation to sound particularly impressive at a client site, by the way. :-)
The two GUIDs are used the same way that the KLID values used to be used. Thus for Yong's case,
0404:E0020404
becomes
0404:{531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{4BDF9F03-C7D3-11D4-B2AB-0080C882687E}
Anyway, sorry I never printed this list before; I did mean to but never got around to it. And then I forgot. :-(
Hopefully this will be of user to people, going forward!
# ray on 15 Sep 2009 10:01 PM:
Consider your pun license revoked.
# Michael S. Kaplan on 17 Sep 2009 1:42 AM:
With this Blog, it has been revoked for over 2 years now. I now pun without a license....
# JJ on 29 Sep 2009 8:02 PM:
Don't be silly. Aardvarkian programmers never pun. They 'cant'.
Carlos on 30 Jan 2010 4:45 PM:
I followed the directions and included this on my unattend.xml:
At the "<settings pass="oobeSystem">"
"<InputLocale>"0409:00000409;0409:00020409;0c0a:0000040a;0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{F3BA9077-6C7E-11D4-97FA-0080C882687E};0404:{531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{761309DE-317A-11D4-9B5D-0080C882687E};0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"</InputLocale>"
After sysprep, the only one I get is English-US. When I try with all the XP codes (0409:00000409;0409:00020409;0c0a:0000040a;0804:00000804;0804:e00e0804;0404:00000404;0404:e0010404;0411:00000411;0411:e0010411) I get only en-US, US-Int, es-ES, zh-CH (US Keyboard), zh-TW (US Keyboard) and jp-JP (US Keyboard).
Am I missing something here?
Thank you,
Carlos
mrtech86 on 27 Aug 2012 10:54 AM:
This worked perfectly for my project. Thank you!
referenced by