Alexandre Julliard : kernel32: Make sure the codepage registry keys are set correctly on wineprefix creation .
Module: wine Branch: master Commit: cf8fa5459abe7a56c156c884882bb337ef3bcec1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cf8fa5459abe7a56c156c88488... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Oct 30 15:14:49 2009 +0100 kernel32: Make sure the codepage registry keys are set correctly on wineprefix creation. --- dlls/kernel32/locale.c | 22 +++++++++++++--------- tools/wine.inf.in | 4 ---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index c1888ac..fb9b517 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -62,8 +62,6 @@ static const union cptable *oem_cptable; static const union cptable *mac_cptable; static const union cptable *unix_cptable; /* NULL if UTF8 */ -static HANDLE NLS_RegOpenKey(HANDLE hRootKey, LPCWSTR szKeyName); - static const WCHAR szNlsKeyName[] = { 'M','a','c','h','i','n','e','\\','S','y','s','t','e','m','\\', 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', @@ -769,16 +767,22 @@ void LOCALE_InitRegistry(void) if (locale_update_registry( hkey, lc_ctypeW, lcid_LC_CTYPE, NULL, 0 )) { - HKEY nls_key = NLS_RegOpenKey( 0, szCodepageKeyName ); + OBJECT_ATTRIBUTES attr; + HANDLE nls_key; - for (i = 0; i < sizeof(update_cp_values)/sizeof(update_cp_values[0]); i++) + RtlInitUnicodeString( &nameW, szCodepageKeyName ); + InitializeObjectAttributes( &attr, &nameW, 0, 0, NULL ); + if (!NtCreateKey( &nls_key, KEY_ALL_ACCESS, &attr, 0, NULL, 0, NULL )) { - count = GetLocaleInfoW( lcid, update_cp_values[i].value | LOCALE_NOUSEROVERRIDE, - bufferW, sizeof(bufferW)/sizeof(WCHAR) ); - RtlInitUnicodeString( &nameW, update_cp_values[i].name ); - NtSetValueKey( nls_key, &nameW, 0, REG_SZ, bufferW, count * sizeof(WCHAR) ); + for (i = 0; i < sizeof(update_cp_values)/sizeof(update_cp_values[0]); i++) + { + count = GetLocaleInfoW( lcid, update_cp_values[i].value | LOCALE_NOUSEROVERRIDE, + bufferW, sizeof(bufferW)/sizeof(WCHAR) ); + RtlInitUnicodeString( &nameW, update_cp_values[i].name ); + NtSetValueKey( nls_key, &nameW, 0, REG_SZ, bufferW, count * sizeof(WCHAR) ); + } + NtClose( nls_key ); } - NtClose( nls_key ); } NtClose( hkey ); diff --git a/tools/wine.inf.in b/tools/wine.inf.in index bb2bd45..ac8742b 100644 --- a/tools/wine.inf.in +++ b/tools/wine.inf.in @@ -584,10 +584,6 @@ HKLM,SOFTWARE\Microsoft\Active Setup\Installed Components\{de5aed00-a4bf-11d1-99 [Nls] HKLM,System\CurrentControlSet\Control\Nls\Codepage,"37",,"" -HKLM,System\CurrentControlSet\Control\Nls\Codepage,"ACP",,"1252" -HKLM,System\CurrentControlSet\Control\Nls\Codepage,"MACCP",,"10000" -HKLM,System\CurrentControlSet\Control\Nls\Codepage,"OEMCP",,"437" - HKLM,System\CurrentControlSet\Control\Nls\Language,"0401",,"" HKLM,System\CurrentControlSet\Control\Nls\Language,"0402",,"" HKLM,System\CurrentControlSet\Control\Nls\Language,"0403",,""
participants (1)
-
Alexandre Julliard