kernel32: Move system locale enumeration functions to kernelbase.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
8d25965e12
commit
a7c190d35f
|
@ -403,7 +403,7 @@
|
|||
@ stdcall EnumDateFormatsExW(ptr long long)
|
||||
@ stdcall EnumDateFormatsW(ptr long long)
|
||||
@ stdcall EnumLanguageGroupLocalesA(ptr long long ptr)
|
||||
@ stdcall EnumLanguageGroupLocalesW(ptr long long ptr)
|
||||
@ stdcall -import EnumLanguageGroupLocalesW(ptr long long ptr)
|
||||
@ stdcall EnumResourceLanguagesA(long str str ptr long)
|
||||
@ stdcall -import EnumResourceLanguagesExA(long str str ptr long long long)
|
||||
@ stdcall -import EnumResourceLanguagesExW(long wstr wstr ptr long long long)
|
||||
|
@ -417,19 +417,19 @@
|
|||
@ stdcall -import EnumResourceTypesExW(long ptr long long long)
|
||||
@ stdcall EnumResourceTypesW(long ptr long)
|
||||
@ stdcall EnumSystemCodePagesA(ptr long)
|
||||
@ stdcall EnumSystemCodePagesW(ptr long)
|
||||
@ stdcall -import EnumSystemCodePagesW(ptr long)
|
||||
@ stdcall EnumSystemFirmwareTables(long ptr long)
|
||||
@ stdcall EnumSystemGeoID(long long ptr)
|
||||
@ stdcall EnumSystemLanguageGroupsA(ptr long ptr)
|
||||
@ stdcall EnumSystemLanguageGroupsW(ptr long ptr)
|
||||
@ stdcall EnumSystemLocalesA(ptr long)
|
||||
@ stdcall EnumSystemLocalesEx(ptr long long ptr)
|
||||
@ stdcall EnumSystemLocalesW(ptr long)
|
||||
@ stdcall -import EnumSystemLanguageGroupsW(ptr long ptr)
|
||||
@ stdcall -import EnumSystemLocalesA(ptr long)
|
||||
@ stdcall -import EnumSystemLocalesEx(ptr long long ptr)
|
||||
@ stdcall -import EnumSystemLocalesW(ptr long)
|
||||
@ stdcall EnumTimeFormatsA(ptr long long)
|
||||
@ stdcall EnumTimeFormatsEx(ptr wstr long long)
|
||||
@ stdcall EnumTimeFormatsW(ptr long long)
|
||||
@ stdcall EnumUILanguagesA(ptr long long)
|
||||
@ stdcall EnumUILanguagesW(ptr long long)
|
||||
@ stdcall -import EnumUILanguagesW(ptr long long)
|
||||
# @ stub EnumerateLocalComputerNamesA
|
||||
# @ stub EnumerateLocalComputerNamesW
|
||||
@ stdcall -arch=x86_64 EnterUmsSchedulingMode(ptr)
|
||||
|
@ -990,7 +990,7 @@
|
|||
# @ stub IsTimeZoneRedirectionEnabled
|
||||
# @ stub IsValidCalDateTime
|
||||
@ stdcall IsValidCodePage(long)
|
||||
@ stdcall IsValidLanguageGroup(long long)
|
||||
@ stdcall -import IsValidLanguageGroup(long long)
|
||||
@ stdcall IsValidLocale(long long)
|
||||
@ stdcall IsValidLocaleName(wstr)
|
||||
# @ stub IsValidUILanguage
|
||||
|
|
|
@ -59,25 +59,20 @@ WINE_DEFAULT_DEBUG_CHANNEL(nls);
|
|||
#define WC_FLAGSMASK (WC_DISCARDNS|WC_SEPCHARS|WC_DEFAULTCHAR|WC_ERR_INVALID_CHARS|\
|
||||
WC_COMPOSITECHECK|WC_NO_BEST_FIT_CHARS)
|
||||
|
||||
extern BOOL WINAPI Internal_EnumLanguageGroupLocales( LANGGROUPLOCALE_ENUMPROCW proc, LGRPID id,
|
||||
DWORD flags, LONG_PTR param, BOOL unicode );
|
||||
extern BOOL WINAPI Internal_EnumSystemCodePages( CODEPAGE_ENUMPROCW proc, DWORD flags, BOOL unicode );
|
||||
extern BOOL WINAPI Internal_EnumSystemLanguageGroups( LANGUAGEGROUP_ENUMPROCW proc, DWORD flags,
|
||||
LONG_PTR param, BOOL unicode );
|
||||
extern BOOL WINAPI Internal_EnumUILanguages( UILANGUAGE_ENUMPROCW proc, DWORD flags,
|
||||
LONG_PTR param, BOOL unicode );
|
||||
|
||||
/* current code pages */
|
||||
static const union cptable *ansi_cptable;
|
||||
static const union cptable *oem_cptable;
|
||||
static const union cptable *mac_cptable;
|
||||
static const union cptable *unix_cptable; /* NULL if UTF8 */
|
||||
|
||||
static const WCHAR szLocaleKeyName[] = {
|
||||
'\\','R','e','g','i','s','t','r','y','\\','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','\\',
|
||||
'C','o','n','t','r','o','l','\\','N','l','s','\\','L','o','c','a','l','e',0
|
||||
};
|
||||
|
||||
static const WCHAR szLangGroupsKeyName[] = {
|
||||
'\\','R','e','g','i','s','t','r','y','\\','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','\\',
|
||||
'C','o','n','t','r','o','l','\\','N','l','s','\\',
|
||||
'L','a','n','g','u','a','g','e',' ','G','r','o','u','p','s',0
|
||||
};
|
||||
|
||||
/* Charset to codepage map, sorted by name. */
|
||||
static const struct charset_entry
|
||||
{
|
||||
|
@ -2115,58 +2110,10 @@ BOOL WINAPI GetCPInfoExW( UINT codepage, DWORD dwFlags, LPCPINFOEXW cpinfo )
|
|||
|
||||
/***********************************************************************
|
||||
* EnumSystemCodePagesA (KERNEL32.@)
|
||||
*
|
||||
* Call a user defined function for every code page installed on the system.
|
||||
*
|
||||
* PARAMS
|
||||
* lpfnCodePageEnum [I] User CODEPAGE_ENUMPROC to call with each found code page
|
||||
* flags [I] Reserved, set to 0.
|
||||
*
|
||||
* RETURNS
|
||||
* TRUE, If all code pages have been enumerated, or
|
||||
* FALSE if lpfnCodePageEnum returned FALSE to stop the enumeration.
|
||||
*/
|
||||
BOOL WINAPI EnumSystemCodePagesA( CODEPAGE_ENUMPROCA lpfnCodePageEnum, DWORD flags )
|
||||
BOOL WINAPI EnumSystemCodePagesA( CODEPAGE_ENUMPROCA proc, DWORD flags )
|
||||
{
|
||||
const union cptable *table;
|
||||
char buffer[10];
|
||||
int index = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (!(table = wine_cp_enum_table( index++ ))) break;
|
||||
sprintf( buffer, "%d", table->info.codepage );
|
||||
if (!lpfnCodePageEnum( buffer )) break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* EnumSystemCodePagesW (KERNEL32.@)
|
||||
*
|
||||
* See EnumSystemCodePagesA.
|
||||
*/
|
||||
BOOL WINAPI EnumSystemCodePagesW( CODEPAGE_ENUMPROCW lpfnCodePageEnum, DWORD flags )
|
||||
{
|
||||
const union cptable *table;
|
||||
WCHAR buffer[10], *p;
|
||||
int page, index = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (!(table = wine_cp_enum_table( index++ ))) break;
|
||||
p = buffer + ARRAY_SIZE( buffer );
|
||||
*--p = 0;
|
||||
page = table->info.codepage;
|
||||
do
|
||||
{
|
||||
*--p = '0' + (page % 10);
|
||||
page /= 10;
|
||||
} while( page );
|
||||
if (!lpfnCodePageEnum( p )) break;
|
||||
}
|
||||
return TRUE;
|
||||
return Internal_EnumSystemCodePages( (CODEPAGE_ENUMPROCW)proc, flags, FALSE );
|
||||
}
|
||||
|
||||
|
||||
|
@ -2733,113 +2680,6 @@ BOOL WINAPI IsValidLocaleName( LPCWSTR locale )
|
|||
return locale_name.matches > 0;
|
||||
}
|
||||
|
||||
static BOOL CALLBACK enum_lang_proc_a( HMODULE hModule, LPCSTR type,
|
||||
LPCSTR name, WORD LangID, LONG_PTR lParam )
|
||||
{
|
||||
LOCALE_ENUMPROCA lpfnLocaleEnum = (LOCALE_ENUMPROCA)lParam;
|
||||
char buf[20];
|
||||
|
||||
sprintf(buf, "%08x", (UINT)LangID);
|
||||
return lpfnLocaleEnum( buf );
|
||||
}
|
||||
|
||||
static BOOL CALLBACK enum_lang_proc_w( HMODULE hModule, LPCWSTR type,
|
||||
LPCWSTR name, WORD LangID, LONG_PTR lParam )
|
||||
{
|
||||
static const WCHAR formatW[] = {'%','0','8','x',0};
|
||||
LOCALE_ENUMPROCW lpfnLocaleEnum = (LOCALE_ENUMPROCW)lParam;
|
||||
WCHAR buf[20];
|
||||
sprintfW( buf, formatW, (UINT)LangID );
|
||||
return lpfnLocaleEnum( buf );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLocalesA (KERNEL32.@)
|
||||
*
|
||||
* Call a users function for each locale available on the system.
|
||||
*
|
||||
* PARAMS
|
||||
* lpfnLocaleEnum [I] Callback function to call for each locale
|
||||
* dwFlags [I] LOCALE_SUPPORTED=All supported, LOCALE_INSTALLED=Installed only
|
||||
*
|
||||
* RETURNS
|
||||
* Success: TRUE.
|
||||
* Failure: FALSE. Use GetLastError() to determine the cause.
|
||||
*/
|
||||
BOOL WINAPI EnumSystemLocalesA( LOCALE_ENUMPROCA lpfnLocaleEnum, DWORD dwFlags )
|
||||
{
|
||||
TRACE("(%p,%08x)\n", lpfnLocaleEnum, dwFlags);
|
||||
EnumResourceLanguagesA( kernel32_handle, (LPSTR)RT_STRING,
|
||||
(LPCSTR)LOCALE_ILANGUAGE, enum_lang_proc_a,
|
||||
(LONG_PTR)lpfnLocaleEnum);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLocalesW (KERNEL32.@)
|
||||
*
|
||||
* See EnumSystemLocalesA.
|
||||
*/
|
||||
BOOL WINAPI EnumSystemLocalesW( LOCALE_ENUMPROCW lpfnLocaleEnum, DWORD dwFlags )
|
||||
{
|
||||
TRACE("(%p,%08x)\n", lpfnLocaleEnum, dwFlags);
|
||||
EnumResourceLanguagesW( kernel32_handle, (LPWSTR)RT_STRING,
|
||||
(LPCWSTR)LOCALE_ILANGUAGE, enum_lang_proc_w,
|
||||
(LONG_PTR)lpfnLocaleEnum);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
struct enum_locale_ex_data
|
||||
{
|
||||
LOCALE_ENUMPROCEX proc;
|
||||
DWORD flags;
|
||||
LPARAM lparam;
|
||||
};
|
||||
|
||||
static BOOL CALLBACK enum_locale_ex_proc( HMODULE module, LPCWSTR type,
|
||||
LPCWSTR name, WORD lang, LONG_PTR lparam )
|
||||
{
|
||||
struct enum_locale_ex_data *data = (struct enum_locale_ex_data *)lparam;
|
||||
WCHAR buffer[256];
|
||||
DWORD neutral;
|
||||
unsigned int flags;
|
||||
|
||||
GetLocaleInfoW( MAKELCID( lang, SORT_DEFAULT ), LOCALE_SNAME | LOCALE_NOUSEROVERRIDE,
|
||||
buffer, ARRAY_SIZE( buffer ));
|
||||
if (!GetLocaleInfoW( MAKELCID( lang, SORT_DEFAULT ),
|
||||
LOCALE_INEUTRAL | LOCALE_NOUSEROVERRIDE | LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&neutral, sizeof(neutral) / sizeof(WCHAR) ))
|
||||
neutral = 0;
|
||||
flags = LOCALE_WINDOWS;
|
||||
flags |= neutral ? LOCALE_NEUTRALDATA : LOCALE_SPECIFICDATA;
|
||||
if (data->flags && !(data->flags & flags)) return TRUE;
|
||||
return data->proc( buffer, flags, data->lparam );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLocalesEx (KERNEL32.@)
|
||||
*/
|
||||
BOOL WINAPI EnumSystemLocalesEx( LOCALE_ENUMPROCEX proc, DWORD flags, LPARAM lparam, LPVOID reserved )
|
||||
{
|
||||
struct enum_locale_ex_data data;
|
||||
|
||||
if (reserved)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
return FALSE;
|
||||
}
|
||||
data.proc = proc;
|
||||
data.flags = flags;
|
||||
data.lparam = lparam;
|
||||
EnumResourceLanguagesW( kernel32_handle, (LPCWSTR)RT_STRING,
|
||||
(LPCWSTR)MAKEINTRESOURCE((LOCALE_SNAME >> 4) + 1),
|
||||
enum_locale_ex_proc, (LONG_PTR)&data );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* GetStringTypeW (KERNEL32.@)
|
||||
*
|
||||
|
@ -3894,437 +3734,21 @@ static HANDLE NLS_RegOpenKey(HANDLE hRootKey, LPCWSTR szKeyName)
|
|||
return hkey;
|
||||
}
|
||||
|
||||
static BOOL NLS_RegEnumValue(HANDLE hKey, UINT ulIndex,
|
||||
LPWSTR szValueName, ULONG valueNameSize,
|
||||
LPWSTR szValueData, ULONG valueDataSize)
|
||||
{
|
||||
BYTE buffer[80];
|
||||
KEY_VALUE_FULL_INFORMATION *info = (KEY_VALUE_FULL_INFORMATION *)buffer;
|
||||
DWORD dwLen;
|
||||
|
||||
if (NtEnumerateValueKey( hKey, ulIndex, KeyValueFullInformation,
|
||||
buffer, sizeof(buffer), &dwLen ) != STATUS_SUCCESS ||
|
||||
info->NameLength > valueNameSize ||
|
||||
info->DataLength > valueDataSize)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
TRACE("info->Name %s info->DataLength %d\n", debugstr_w(info->Name), info->DataLength);
|
||||
|
||||
memcpy( szValueName, info->Name, info->NameLength);
|
||||
szValueName[info->NameLength / sizeof(WCHAR)] = '\0';
|
||||
memcpy( szValueData, buffer + info->DataOffset, info->DataLength );
|
||||
szValueData[info->DataLength / sizeof(WCHAR)] = '\0';
|
||||
|
||||
TRACE("returning %s %s\n", debugstr_w(szValueName), debugstr_w(szValueData));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL NLS_RegGetDword(HANDLE hKey, LPCWSTR szValueName, DWORD *lpVal)
|
||||
{
|
||||
BYTE buffer[128];
|
||||
const KEY_VALUE_PARTIAL_INFORMATION *info = (KEY_VALUE_PARTIAL_INFORMATION *)buffer;
|
||||
DWORD dwSize = sizeof(buffer);
|
||||
UNICODE_STRING valueName;
|
||||
|
||||
RtlInitUnicodeString( &valueName, szValueName );
|
||||
|
||||
TRACE("%p, %s\n", hKey, debugstr_w(szValueName));
|
||||
if (NtQueryValueKey( hKey, &valueName, KeyValuePartialInformation,
|
||||
buffer, dwSize, &dwSize ) == STATUS_SUCCESS &&
|
||||
info->DataLength == sizeof(DWORD))
|
||||
{
|
||||
memcpy(lpVal, info->Data, sizeof(DWORD));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL NLS_GetLanguageGroupName(LGRPID lgrpid, LPWSTR szName, ULONG nameSize)
|
||||
{
|
||||
LANGID langId;
|
||||
LPCWSTR szResourceName = MAKEINTRESOURCEW(((lgrpid + 0x2000) >> 4) + 1);
|
||||
HRSRC hResource;
|
||||
BOOL bRet = FALSE;
|
||||
|
||||
/* FIXME: Is it correct to use the system default langid? */
|
||||
langId = GetSystemDefaultLangID();
|
||||
|
||||
if (SUBLANGID(langId) == SUBLANG_NEUTRAL) langId = get_default_sublang( langId );
|
||||
|
||||
hResource = FindResourceExW( kernel32_handle, (LPWSTR)RT_STRING, szResourceName, langId );
|
||||
|
||||
if (hResource)
|
||||
{
|
||||
HGLOBAL hResDir = LoadResource( kernel32_handle, hResource );
|
||||
|
||||
if (hResDir)
|
||||
{
|
||||
ULONG iResourceIndex = lgrpid & 0xf;
|
||||
LPCWSTR lpResEntry = LockResource( hResDir );
|
||||
ULONG i;
|
||||
|
||||
for (i = 0; i < iResourceIndex; i++)
|
||||
lpResEntry += *lpResEntry + 1;
|
||||
|
||||
if (*lpResEntry < nameSize)
|
||||
{
|
||||
memcpy( szName, lpResEntry + 1, *lpResEntry * sizeof(WCHAR) );
|
||||
szName[*lpResEntry] = '\0';
|
||||
bRet = TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
FreeResource( hResource );
|
||||
}
|
||||
return bRet;
|
||||
}
|
||||
|
||||
/* Callback function ptrs for EnumSystemLanguageGroupsA/W */
|
||||
typedef struct
|
||||
{
|
||||
LANGUAGEGROUP_ENUMPROCA procA;
|
||||
LANGUAGEGROUP_ENUMPROCW procW;
|
||||
DWORD dwFlags;
|
||||
LONG_PTR lParam;
|
||||
} ENUMLANGUAGEGROUP_CALLBACKS;
|
||||
|
||||
/* Internal implementation of EnumSystemLanguageGroupsA/W */
|
||||
static BOOL NLS_EnumSystemLanguageGroups(ENUMLANGUAGEGROUP_CALLBACKS *lpProcs)
|
||||
{
|
||||
WCHAR szNumber[10], szValue[4];
|
||||
HANDLE hKey;
|
||||
BOOL bContinue = TRUE;
|
||||
ULONG ulIndex = 0;
|
||||
|
||||
if (!lpProcs)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (lpProcs->dwFlags)
|
||||
{
|
||||
case 0:
|
||||
/* Default to LGRPID_INSTALLED */
|
||||
lpProcs->dwFlags = LGRPID_INSTALLED;
|
||||
/* Fall through... */
|
||||
case LGRPID_INSTALLED:
|
||||
case LGRPID_SUPPORTED:
|
||||
break;
|
||||
default:
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hKey = NLS_RegOpenKey( 0, szLangGroupsKeyName );
|
||||
|
||||
if (!hKey)
|
||||
FIXME("NLS registry key not found. Please apply the default registry file 'wine.inf'\n");
|
||||
|
||||
while (bContinue)
|
||||
{
|
||||
if (NLS_RegEnumValue( hKey, ulIndex, szNumber, sizeof(szNumber),
|
||||
szValue, sizeof(szValue) ))
|
||||
{
|
||||
BOOL bInstalled = szValue[0] == '1';
|
||||
LGRPID lgrpid = strtoulW( szNumber, NULL, 16 );
|
||||
|
||||
TRACE("grpid %s (%sinstalled)\n", debugstr_w(szNumber),
|
||||
bInstalled ? "" : "not ");
|
||||
|
||||
if (lpProcs->dwFlags == LGRPID_SUPPORTED || bInstalled)
|
||||
{
|
||||
WCHAR szGrpName[48];
|
||||
|
||||
if (!NLS_GetLanguageGroupName( lgrpid, szGrpName, ARRAY_SIZE( szGrpName )))
|
||||
szGrpName[0] = '\0';
|
||||
|
||||
if (lpProcs->procW)
|
||||
bContinue = lpProcs->procW( lgrpid, szNumber, szGrpName, lpProcs->dwFlags,
|
||||
lpProcs->lParam );
|
||||
else
|
||||
{
|
||||
char szNumberA[ARRAY_SIZE( szNumber )];
|
||||
char szGrpNameA[48];
|
||||
|
||||
/* FIXME: MSDN doesn't say which code page the W->A translation uses,
|
||||
* or whether the language names are ever localised. Assume CP_ACP.
|
||||
*/
|
||||
|
||||
WideCharToMultiByte(CP_ACP, 0, szNumber, -1, szNumberA, sizeof(szNumberA), 0, 0);
|
||||
WideCharToMultiByte(CP_ACP, 0, szGrpName, -1, szGrpNameA, sizeof(szGrpNameA), 0, 0);
|
||||
|
||||
bContinue = lpProcs->procA( lgrpid, szNumberA, szGrpNameA, lpProcs->dwFlags,
|
||||
lpProcs->lParam );
|
||||
}
|
||||
}
|
||||
|
||||
ulIndex++;
|
||||
}
|
||||
else
|
||||
bContinue = FALSE;
|
||||
|
||||
if (!bContinue)
|
||||
break;
|
||||
}
|
||||
|
||||
if (hKey)
|
||||
NtClose( hKey );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLanguageGroupsA (KERNEL32.@)
|
||||
*
|
||||
* Call a users function for each language group available on the system.
|
||||
*
|
||||
* PARAMS
|
||||
* pLangGrpEnumProc [I] Callback function to call for each language group
|
||||
* dwFlags [I] LGRPID_SUPPORTED=All Supported, LGRPID_INSTALLED=Installed only
|
||||
* lParam [I] User parameter to pass to pLangGrpEnumProc
|
||||
*
|
||||
* RETURNS
|
||||
* Success: TRUE.
|
||||
* Failure: FALSE. Use GetLastError() to determine the cause.
|
||||
*/
|
||||
BOOL WINAPI EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA pLangGrpEnumProc,
|
||||
DWORD dwFlags, LONG_PTR lParam)
|
||||
BOOL WINAPI EnumSystemLanguageGroupsA( LANGUAGEGROUP_ENUMPROCA proc, DWORD flags, LONG_PTR param )
|
||||
{
|
||||
ENUMLANGUAGEGROUP_CALLBACKS procs;
|
||||
|
||||
TRACE("(%p,0x%08X,0x%08lX)\n", pLangGrpEnumProc, dwFlags, lParam);
|
||||
|
||||
procs.procA = pLangGrpEnumProc;
|
||||
procs.procW = NULL;
|
||||
procs.dwFlags = dwFlags;
|
||||
procs.lParam = lParam;
|
||||
|
||||
return NLS_EnumSystemLanguageGroups( pLangGrpEnumProc ? &procs : NULL);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLanguageGroupsW (KERNEL32.@)
|
||||
*
|
||||
* See EnumSystemLanguageGroupsA.
|
||||
*/
|
||||
BOOL WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW pLangGrpEnumProc,
|
||||
DWORD dwFlags, LONG_PTR lParam)
|
||||
{
|
||||
ENUMLANGUAGEGROUP_CALLBACKS procs;
|
||||
|
||||
TRACE("(%p,0x%08X,0x%08lX)\n", pLangGrpEnumProc, dwFlags, lParam);
|
||||
|
||||
procs.procA = NULL;
|
||||
procs.procW = pLangGrpEnumProc;
|
||||
procs.dwFlags = dwFlags;
|
||||
procs.lParam = lParam;
|
||||
|
||||
return NLS_EnumSystemLanguageGroups( pLangGrpEnumProc ? &procs : NULL);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IsValidLanguageGroup (KERNEL32.@)
|
||||
*
|
||||
* Determine if a language group is supported and/or installed.
|
||||
*
|
||||
* PARAMS
|
||||
* lgrpid [I] Language Group Id (LGRPID_ values from "winnls.h")
|
||||
* dwFlags [I] LGRPID_SUPPORTED=Supported, LGRPID_INSTALLED=Installed
|
||||
*
|
||||
* RETURNS
|
||||
* TRUE, if lgrpid is supported and/or installed, according to dwFlags.
|
||||
* FALSE otherwise.
|
||||
*/
|
||||
BOOL WINAPI IsValidLanguageGroup(LGRPID lgrpid, DWORD dwFlags)
|
||||
{
|
||||
static const WCHAR szFormat[] = { '%','x','\0' };
|
||||
WCHAR szValueName[16], szValue[2];
|
||||
BOOL bSupported = FALSE, bInstalled = FALSE;
|
||||
HANDLE hKey;
|
||||
|
||||
|
||||
switch (dwFlags)
|
||||
{
|
||||
case LGRPID_INSTALLED:
|
||||
case LGRPID_SUPPORTED:
|
||||
|
||||
hKey = NLS_RegOpenKey( 0, szLangGroupsKeyName );
|
||||
|
||||
sprintfW( szValueName, szFormat, lgrpid );
|
||||
|
||||
if (NLS_RegGetDword( hKey, szValueName, (LPDWORD)szValue ))
|
||||
{
|
||||
bSupported = TRUE;
|
||||
|
||||
if (szValue[0] == '1')
|
||||
bInstalled = TRUE;
|
||||
}
|
||||
|
||||
if (hKey)
|
||||
NtClose( hKey );
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if ((dwFlags == LGRPID_SUPPORTED && bSupported) ||
|
||||
(dwFlags == LGRPID_INSTALLED && bInstalled))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Callback function ptrs for EnumLanguageGrouplocalesA/W */
|
||||
typedef struct
|
||||
{
|
||||
LANGGROUPLOCALE_ENUMPROCA procA;
|
||||
LANGGROUPLOCALE_ENUMPROCW procW;
|
||||
DWORD dwFlags;
|
||||
LGRPID lgrpid;
|
||||
LONG_PTR lParam;
|
||||
} ENUMLANGUAGEGROUPLOCALE_CALLBACKS;
|
||||
|
||||
/* Internal implementation of EnumLanguageGrouplocalesA/W */
|
||||
static BOOL NLS_EnumLanguageGroupLocales(ENUMLANGUAGEGROUPLOCALE_CALLBACKS *lpProcs)
|
||||
{
|
||||
static const WCHAR szAlternateSortsKeyName[] = {
|
||||
'A','l','t','e','r','n','a','t','e',' ','S','o','r','t','s','\0'
|
||||
};
|
||||
WCHAR szNumber[10], szValue[4];
|
||||
HANDLE hKey;
|
||||
BOOL bContinue = TRUE, bAlternate = FALSE;
|
||||
LGRPID lgrpid;
|
||||
ULONG ulIndex = 1; /* Ignore default entry of 1st key */
|
||||
|
||||
if (!lpProcs || !lpProcs->lgrpid || lpProcs->lgrpid > LGRPID_ARMENIAN)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (lpProcs->dwFlags)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hKey = NLS_RegOpenKey( 0, szLocaleKeyName );
|
||||
|
||||
if (!hKey)
|
||||
WARN("NLS registry key not found. Please apply the default registry file 'wine.inf'\n");
|
||||
|
||||
while (bContinue)
|
||||
{
|
||||
if (NLS_RegEnumValue( hKey, ulIndex, szNumber, sizeof(szNumber),
|
||||
szValue, sizeof(szValue) ))
|
||||
{
|
||||
lgrpid = strtoulW( szValue, NULL, 16 );
|
||||
|
||||
TRACE("lcid %s, grpid %d (%smatched)\n", debugstr_w(szNumber),
|
||||
lgrpid, lgrpid == lpProcs->lgrpid ? "" : "not ");
|
||||
|
||||
if (lgrpid == lpProcs->lgrpid)
|
||||
{
|
||||
LCID lcid;
|
||||
|
||||
lcid = strtoulW( szNumber, NULL, 16 );
|
||||
|
||||
/* FIXME: native returns extra text for a few (17/150) locales, e.g:
|
||||
* '00000437 ;Georgian'
|
||||
* At present we only pass the LCID string.
|
||||
*/
|
||||
|
||||
if (lpProcs->procW)
|
||||
bContinue = lpProcs->procW( lgrpid, lcid, szNumber, lpProcs->lParam );
|
||||
else
|
||||
{
|
||||
char szNumberA[ARRAY_SIZE( szNumber )];
|
||||
|
||||
WideCharToMultiByte(CP_ACP, 0, szNumber, -1, szNumberA, sizeof(szNumberA), 0, 0);
|
||||
|
||||
bContinue = lpProcs->procA( lgrpid, lcid, szNumberA, lpProcs->lParam );
|
||||
}
|
||||
}
|
||||
|
||||
ulIndex++;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Finished enumerating this key */
|
||||
if (!bAlternate)
|
||||
{
|
||||
/* Enumerate alternate sorts also */
|
||||
hKey = NLS_RegOpenKey( hKey, szAlternateSortsKeyName );
|
||||
bAlternate = TRUE;
|
||||
ulIndex = 0;
|
||||
}
|
||||
else
|
||||
bContinue = FALSE; /* Finished both keys */
|
||||
}
|
||||
|
||||
if (!bContinue)
|
||||
break;
|
||||
}
|
||||
|
||||
if (hKey)
|
||||
NtClose( hKey );
|
||||
|
||||
return TRUE;
|
||||
return Internal_EnumSystemLanguageGroups( (LANGUAGEGROUP_ENUMPROCW)proc, flags, param, FALSE );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumLanguageGroupLocalesA (KERNEL32.@)
|
||||
*
|
||||
* Call a users function for every locale in a language group available on the system.
|
||||
*
|
||||
* PARAMS
|
||||
* pLangGrpLcEnumProc [I] Callback function to call for each locale
|
||||
* lgrpid [I] Language group (LGRPID_ values from "winnls.h")
|
||||
* dwFlags [I] Reserved, set to 0
|
||||
* lParam [I] User parameter to pass to pLangGrpLcEnumProc
|
||||
*
|
||||
* RETURNS
|
||||
* Success: TRUE.
|
||||
* Failure: FALSE. Use GetLastError() to determine the cause.
|
||||
*/
|
||||
BOOL WINAPI EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA pLangGrpLcEnumProc,
|
||||
LGRPID lgrpid, DWORD dwFlags, LONG_PTR lParam)
|
||||
BOOL WINAPI EnumLanguageGroupLocalesA( LANGGROUPLOCALE_ENUMPROCA proc, LGRPID id,
|
||||
DWORD flags, LONG_PTR param )
|
||||
{
|
||||
ENUMLANGUAGEGROUPLOCALE_CALLBACKS callbacks;
|
||||
|
||||
TRACE("(%p,0x%08X,0x%08X,0x%08lX)\n", pLangGrpLcEnumProc, lgrpid, dwFlags, lParam);
|
||||
|
||||
callbacks.procA = pLangGrpLcEnumProc;
|
||||
callbacks.procW = NULL;
|
||||
callbacks.dwFlags = dwFlags;
|
||||
callbacks.lgrpid = lgrpid;
|
||||
callbacks.lParam = lParam;
|
||||
|
||||
return NLS_EnumLanguageGroupLocales( pLangGrpLcEnumProc ? &callbacks : NULL );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumLanguageGroupLocalesW (KERNEL32.@)
|
||||
*
|
||||
* See EnumLanguageGroupLocalesA.
|
||||
*/
|
||||
BOOL WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW pLangGrpLcEnumProc,
|
||||
LGRPID lgrpid, DWORD dwFlags, LONG_PTR lParam)
|
||||
{
|
||||
ENUMLANGUAGEGROUPLOCALE_CALLBACKS callbacks;
|
||||
|
||||
TRACE("(%p,0x%08X,0x%08X,0x%08lX)\n", pLangGrpLcEnumProc, lgrpid, dwFlags, lParam);
|
||||
|
||||
callbacks.procA = NULL;
|
||||
callbacks.procW = pLangGrpLcEnumProc;
|
||||
callbacks.dwFlags = dwFlags;
|
||||
callbacks.lgrpid = lgrpid;
|
||||
callbacks.lParam = lParam;
|
||||
|
||||
return NLS_EnumLanguageGroupLocales( pLangGrpLcEnumProc ? &callbacks : NULL );
|
||||
return Internal_EnumLanguageGroupLocales( (LANGGROUPLOCALE_ENUMPROCW)proc, id, flags, param, FALSE );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -4420,94 +3844,14 @@ BOOL WINAPI SetUserGeoID( GEOID GeoID )
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
union
|
||||
{
|
||||
UILANGUAGE_ENUMPROCA procA;
|
||||
UILANGUAGE_ENUMPROCW procW;
|
||||
} u;
|
||||
DWORD flags;
|
||||
LONG_PTR param;
|
||||
} ENUM_UILANG_CALLBACK;
|
||||
|
||||
static BOOL CALLBACK enum_uilang_proc_a( HMODULE hModule, LPCSTR type,
|
||||
LPCSTR name, WORD LangID, LONG_PTR lParam )
|
||||
{
|
||||
ENUM_UILANG_CALLBACK *enum_uilang = (ENUM_UILANG_CALLBACK *)lParam;
|
||||
char buf[20];
|
||||
|
||||
sprintf(buf, "%08x", (UINT)LangID);
|
||||
return enum_uilang->u.procA( buf, enum_uilang->param );
|
||||
}
|
||||
|
||||
static BOOL CALLBACK enum_uilang_proc_w( HMODULE hModule, LPCWSTR type,
|
||||
LPCWSTR name, WORD LangID, LONG_PTR lParam )
|
||||
{
|
||||
static const WCHAR formatW[] = {'%','0','8','x',0};
|
||||
ENUM_UILANG_CALLBACK *enum_uilang = (ENUM_UILANG_CALLBACK *)lParam;
|
||||
WCHAR buf[20];
|
||||
|
||||
sprintfW( buf, formatW, (UINT)LangID );
|
||||
return enum_uilang->u.procW( buf, enum_uilang->param );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumUILanguagesA (KERNEL32.@)
|
||||
*/
|
||||
BOOL WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA pUILangEnumProc, DWORD dwFlags, LONG_PTR lParam)
|
||||
BOOL WINAPI EnumUILanguagesA( UILANGUAGE_ENUMPROCA proc, DWORD flags, LONG_PTR param )
|
||||
{
|
||||
ENUM_UILANG_CALLBACK enum_uilang;
|
||||
|
||||
TRACE("%p, %x, %lx\n", pUILangEnumProc, dwFlags, lParam);
|
||||
|
||||
if(!pUILangEnumProc) {
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
if(dwFlags & ~MUI_LANGUAGE_ID) {
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
enum_uilang.u.procA = pUILangEnumProc;
|
||||
enum_uilang.flags = dwFlags;
|
||||
enum_uilang.param = lParam;
|
||||
|
||||
EnumResourceLanguagesA( kernel32_handle, (LPCSTR)RT_STRING,
|
||||
(LPCSTR)LOCALE_ILANGUAGE, enum_uilang_proc_a,
|
||||
(LONG_PTR)&enum_uilang);
|
||||
return TRUE;
|
||||
return Internal_EnumUILanguages( (UILANGUAGE_ENUMPROCW)proc, flags, param, FALSE );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumUILanguagesW (KERNEL32.@)
|
||||
*/
|
||||
BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW pUILangEnumProc, DWORD dwFlags, LONG_PTR lParam)
|
||||
{
|
||||
ENUM_UILANG_CALLBACK enum_uilang;
|
||||
|
||||
TRACE("%p, %x, %lx\n", pUILangEnumProc, dwFlags, lParam);
|
||||
|
||||
|
||||
if(!pUILangEnumProc) {
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
if(dwFlags & ~MUI_LANGUAGE_ID) {
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
enum_uilang.u.procW = pUILangEnumProc;
|
||||
enum_uilang.flags = dwFlags;
|
||||
enum_uilang.param = lParam;
|
||||
|
||||
EnumResourceLanguagesW( kernel32_handle, (LPCWSTR)RT_STRING,
|
||||
(LPCWSTR)LOCALE_ILANGUAGE, enum_uilang_proc_w,
|
||||
(LONG_PTR)&enum_uilang);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
enum locationkind {
|
||||
LOCATION_NATION = 0,
|
||||
|
|
|
@ -30,6 +30,7 @@ extern void init_startup_info( RTL_USER_PROCESS_PARAMETERS *params ) DECLSPEC_HI
|
|||
|
||||
extern const WCHAR windows_dir[] DECLSPEC_HIDDEN;
|
||||
extern const WCHAR system_dir[] DECLSPEC_HIDDEN;
|
||||
extern HANDLE kernel32_handle DECLSPEC_HIDDEN;
|
||||
|
||||
static inline BOOL is_console_handle(HANDLE h)
|
||||
{
|
||||
|
|
|
@ -298,7 +298,7 @@
|
|||
@ stdcall EnumDateFormatsW(ptr long long) kernel32.EnumDateFormatsW
|
||||
# @ stub EnumDeviceDrivers
|
||||
@ stdcall EnumDynamicTimeZoneInformation(long ptr)
|
||||
@ stdcall EnumLanguageGroupLocalesW(ptr long long ptr) kernel32.EnumLanguageGroupLocalesW
|
||||
@ stdcall EnumLanguageGroupLocalesW(ptr long long ptr)
|
||||
# @ stub EnumPageFilesA
|
||||
# @ stub EnumPageFilesW
|
||||
# @ stub EnumProcessModules
|
||||
|
@ -311,16 +311,16 @@
|
|||
@ stdcall EnumResourceNamesW(long wstr ptr long)
|
||||
@ stdcall EnumResourceTypesExA(long ptr long long long)
|
||||
@ stdcall EnumResourceTypesExW(long ptr long long long)
|
||||
@ stdcall EnumSystemCodePagesW(ptr long) kernel32.EnumSystemCodePagesW
|
||||
@ stdcall EnumSystemCodePagesW(ptr long)
|
||||
@ stdcall EnumSystemFirmwareTables(long ptr long) kernel32.EnumSystemFirmwareTables
|
||||
@ stdcall EnumSystemGeoID(long long ptr) kernel32.EnumSystemGeoID
|
||||
@ stdcall EnumSystemLanguageGroupsW(ptr long ptr) kernel32.EnumSystemLanguageGroupsW
|
||||
@ stdcall EnumSystemLocalesA(ptr long) kernel32.EnumSystemLocalesA
|
||||
@ stdcall EnumSystemLocalesEx(ptr long long ptr) kernel32.EnumSystemLocalesEx
|
||||
@ stdcall EnumSystemLocalesW(ptr long) kernel32.EnumSystemLocalesW
|
||||
@ stdcall EnumSystemLanguageGroupsW(ptr long ptr)
|
||||
@ stdcall EnumSystemLocalesA(ptr long)
|
||||
@ stdcall EnumSystemLocalesEx(ptr long long ptr)
|
||||
@ stdcall EnumSystemLocalesW(ptr long)
|
||||
@ stdcall EnumTimeFormatsEx(ptr wstr long long) kernel32.EnumTimeFormatsEx
|
||||
@ stdcall EnumTimeFormatsW(ptr long long) kernel32.EnumTimeFormatsW
|
||||
@ stdcall EnumUILanguagesW(ptr long long) kernel32.EnumUILanguagesW
|
||||
@ stdcall EnumUILanguagesW(ptr long long)
|
||||
# @ stub EnumerateStateAtomValues
|
||||
# @ stub EnumerateStateContainerItems
|
||||
@ stub EqualDomainSid
|
||||
|
@ -826,12 +826,12 @@
|
|||
@ stub InternalLcidToName
|
||||
@ stub Internal_EnumCalendarInfo
|
||||
@ stub Internal_EnumDateFormats
|
||||
@ stub Internal_EnumLanguageGroupLocales
|
||||
@ stub Internal_EnumSystemCodePages
|
||||
@ stub Internal_EnumSystemLanguageGroups
|
||||
@ stdcall Internal_EnumLanguageGroupLocales(ptr long long ptr long)
|
||||
@ stdcall Internal_EnumSystemCodePages(ptr long long)
|
||||
@ stdcall Internal_EnumSystemLanguageGroups(ptr long ptr long)
|
||||
@ stub Internal_EnumSystemLocales
|
||||
@ stub Internal_EnumTimeFormats
|
||||
@ stub Internal_EnumUILanguages
|
||||
@ stdcall Internal_EnumUILanguages(ptr long long long)
|
||||
# @ stub InternetTimeFromSystemTimeA
|
||||
# @ stub InternetTimeFromSystemTimeW
|
||||
# @ stub InternetTimeToSystemTimeA
|
||||
|
@ -875,7 +875,7 @@
|
|||
@ stdcall IsTokenRestricted(long)
|
||||
@ stdcall IsValidAcl(ptr)
|
||||
@ stdcall IsValidCodePage(long) kernel32.IsValidCodePage
|
||||
@ stdcall IsValidLanguageGroup(long long) kernel32.IsValidLanguageGroup
|
||||
@ stdcall IsValidLanguageGroup(long long)
|
||||
@ stdcall IsValidLocale(long long) kernel32.IsValidLocale
|
||||
@ stdcall IsValidLocaleName(wstr) kernel32.IsValidLocaleName
|
||||
# @ stub IsValidNLSVersion
|
||||
|
|
|
@ -24,12 +24,15 @@
|
|||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "ntstatus.h"
|
||||
#define WIN32_NO_STATUS
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winreg.h"
|
||||
#include "winnls.h"
|
||||
#include "winuser.h"
|
||||
#include "winternl.h"
|
||||
#include "kernelbase.h"
|
||||
#include "wine/debug.h"
|
||||
|
@ -37,6 +40,198 @@
|
|||
WINE_DEFAULT_DEBUG_CHANNEL(nls);
|
||||
|
||||
|
||||
static const WCHAR codepages_key[] =
|
||||
{ 'S','y','s','t','e','m','\\','C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t',
|
||||
'\\','C','o','n','t','r','o','l','\\','N','l','s','\\','C','o','d','e','P','a','g','e',0};
|
||||
static const WCHAR language_groups_key[] =
|
||||
{ 'S','y','s','t','e','m','\\','C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t',
|
||||
'\\','C','o','n','t','r','o','l','\\','N','l','s',
|
||||
'\\','L','a','n','g','u','a','g','e',' ','G','r','o','u','p','s',0 };
|
||||
static const WCHAR locales_key[] =
|
||||
{ 'S','y','s','t','e','m','\\','C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t',
|
||||
'\\','C','o','n','t','r','o','l','\\','N','l','s','\\','L','o','c','a','l','e',0};
|
||||
static const WCHAR altsort_key[] = {'A','l','t','e','r','n','a','t','e',' ','S','o','r','t','s',0};
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Internal_EnumLanguageGroupLocales (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumLanguageGroupLocales( LANGGROUPLOCALE_ENUMPROCW proc, LGRPID id,
|
||||
DWORD flags, LONG_PTR param, BOOL unicode )
|
||||
{
|
||||
WCHAR name[10], value[10];
|
||||
DWORD name_len, value_len, type, index = 0, alt = 0;
|
||||
HKEY key, altkey;
|
||||
LCID lcid;
|
||||
|
||||
if (!proc || id < LGRPID_WESTERN_EUROPE || id > LGRPID_ARMENIAN)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, locales_key, 0, KEY_READ, &key )) return FALSE;
|
||||
if (RegOpenKeyExW( key, altsort_key, 0, KEY_READ, &altkey )) altkey = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
name_len = ARRAY_SIZE(name);
|
||||
value_len = sizeof(value);
|
||||
if (RegEnumValueW( alt ? altkey : key, index++, name, &name_len, NULL,
|
||||
&type, (BYTE *)value, &value_len ))
|
||||
{
|
||||
if (alt++) break;
|
||||
index = 0;
|
||||
continue;
|
||||
}
|
||||
if (type != REG_SZ) continue;
|
||||
if (id != wcstoul( value, NULL, 16 )) continue;
|
||||
lcid = wcstoul( name, NULL, 16 );
|
||||
if (!unicode)
|
||||
{
|
||||
char nameA[10];
|
||||
WideCharToMultiByte( CP_ACP, 0, name, -1, nameA, sizeof(nameA), NULL, NULL );
|
||||
if (!((LANGGROUPLOCALE_ENUMPROCA)proc)( id, lcid, nameA, param )) break;
|
||||
}
|
||||
else if (!proc( id, lcid, name, param )) break;
|
||||
}
|
||||
RegCloseKey( altkey );
|
||||
RegCloseKey( key );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* Internal_EnumSystemCodePages (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumSystemCodePages( CODEPAGE_ENUMPROCW proc, DWORD flags,
|
||||
BOOL unicode )
|
||||
{
|
||||
WCHAR name[10];
|
||||
DWORD name_len, type, index = 0;
|
||||
HKEY key;
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, codepages_key, 0, KEY_READ, &key )) return FALSE;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
name_len = ARRAY_SIZE(name);
|
||||
if (RegEnumValueW( key, index++, name, &name_len, NULL, &type, NULL, NULL )) break;
|
||||
if (type != REG_SZ) continue;
|
||||
if (!wcstoul( name, NULL, 10 )) continue;
|
||||
if (!unicode)
|
||||
{
|
||||
char nameA[10];
|
||||
WideCharToMultiByte( CP_ACP, 0, name, -1, nameA, sizeof(nameA), NULL, NULL );
|
||||
if (!((CODEPAGE_ENUMPROCA)proc)( nameA )) break;
|
||||
}
|
||||
else if (!proc( name )) break;
|
||||
}
|
||||
RegCloseKey( key );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Internal_EnumSystemLanguageGroups (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumSystemLanguageGroups( LANGUAGEGROUP_ENUMPROCW proc,
|
||||
DWORD flags, LONG_PTR param, BOOL unicode )
|
||||
{
|
||||
WCHAR name[10], value[10], descr[80];
|
||||
DWORD name_len, value_len, type, index = 0;
|
||||
HKEY key;
|
||||
LGRPID id;
|
||||
|
||||
if (!proc)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (flags)
|
||||
{
|
||||
case 0:
|
||||
flags = LGRPID_INSTALLED;
|
||||
break;
|
||||
case LGRPID_INSTALLED:
|
||||
case LGRPID_SUPPORTED:
|
||||
break;
|
||||
default:
|
||||
SetLastError( ERROR_INVALID_FLAGS );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, language_groups_key, 0, KEY_READ, &key )) return FALSE;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
name_len = ARRAY_SIZE(name);
|
||||
value_len = sizeof(value);
|
||||
if (RegEnumValueW( key, index++, name, &name_len, NULL, &type, (BYTE *)value, &value_len )) break;
|
||||
if (type != REG_SZ) continue;
|
||||
|
||||
id = wcstoul( name, NULL, 16 );
|
||||
|
||||
if (!(flags & LGRPID_SUPPORTED) && !wcstoul( value, NULL, 10 )) continue;
|
||||
if (!LoadStringW( kernel32_handle, 0x2000 + id, descr, ARRAY_SIZE(descr) )) descr[0] = 0;
|
||||
TRACE( "%p: %u %s %s %x %lx\n", proc, id, debugstr_w(name), debugstr_w(descr), flags, param );
|
||||
if (!unicode)
|
||||
{
|
||||
char nameA[10], descrA[80];
|
||||
WideCharToMultiByte( CP_ACP, 0, name, -1, nameA, sizeof(nameA), NULL, NULL );
|
||||
WideCharToMultiByte( CP_ACP, 0, descr, -1, descrA, sizeof(descrA), NULL, NULL );
|
||||
if (!((LANGUAGEGROUP_ENUMPROCA)proc)( id, nameA, descrA, flags, param )) break;
|
||||
}
|
||||
else if (!proc( id, name, descr, flags, param )) break;
|
||||
}
|
||||
RegCloseKey( key );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Internal_EnumUILanguages (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumUILanguages( UILANGUAGE_ENUMPROCW proc, DWORD flags,
|
||||
LONG_PTR param, BOOL unicode )
|
||||
{
|
||||
WCHAR name[10];
|
||||
DWORD name_len, type, index = 0;
|
||||
HKEY key;
|
||||
|
||||
if (!proc)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
return FALSE;
|
||||
}
|
||||
if (flags & ~MUI_LANGUAGE_ID)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_FLAGS );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, locales_key, 0, KEY_READ, &key )) return FALSE;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
name_len = ARRAY_SIZE(name);
|
||||
if (RegEnumValueW( key, index++, name, &name_len, NULL, &type, NULL, NULL )) break;
|
||||
if (type != REG_SZ) continue;
|
||||
if (!wcstoul( name, NULL, 16 )) continue;
|
||||
if (!unicode)
|
||||
{
|
||||
char nameA[10];
|
||||
WideCharToMultiByte( CP_ACP, 0, name, -1, nameA, sizeof(nameA), NULL, NULL );
|
||||
if (!((UILANGUAGE_ENUMPROCA)proc)( nameA, param )) break;
|
||||
}
|
||||
else if (!proc( name, param )) break;
|
||||
}
|
||||
RegCloseKey( key );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* CompareStringOrdinal (kernelbase.@)
|
||||
*/
|
||||
|
@ -60,6 +255,143 @@ INT WINAPI DECLSPEC_HOTPATCH CompareStringOrdinal( const WCHAR *str1, INT len1,
|
|||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* EnumLanguageGroupLocalesW (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH EnumLanguageGroupLocalesW( LANGGROUPLOCALE_ENUMPROCW proc, LGRPID id,
|
||||
DWORD flags, LONG_PTR param )
|
||||
{
|
||||
return Internal_EnumLanguageGroupLocales( proc, id, flags, param, TRUE );
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* EnumUILanguagesW (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH EnumUILanguagesW( UILANGUAGE_ENUMPROCW proc, DWORD flags, LONG_PTR param )
|
||||
{
|
||||
return Internal_EnumUILanguages( proc, flags, param, TRUE );
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* EnumSystemCodePagesW (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH EnumSystemCodePagesW( CODEPAGE_ENUMPROCW proc, DWORD flags )
|
||||
{
|
||||
return Internal_EnumSystemCodePages( proc, flags, TRUE );
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLanguageGroupsW (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH EnumSystemLanguageGroupsW( LANGUAGEGROUP_ENUMPROCW proc,
|
||||
DWORD flags, LONG_PTR param )
|
||||
{
|
||||
return Internal_EnumSystemLanguageGroups( proc, flags, param, TRUE );
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLocalesA (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH EnumSystemLocalesA( LOCALE_ENUMPROCA proc, DWORD flags )
|
||||
{
|
||||
char name[10];
|
||||
DWORD name_len, type, index = 0;
|
||||
HKEY key;
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, locales_key, 0, KEY_READ, &key )) return FALSE;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
name_len = ARRAY_SIZE(name);
|
||||
if (RegEnumValueA( key, index++, name, &name_len, NULL, &type, NULL, NULL )) break;
|
||||
if (type != REG_SZ) continue;
|
||||
if (!strtoul( name, NULL, 16 )) continue;
|
||||
if (!proc( name )) break;
|
||||
}
|
||||
RegCloseKey( key );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLocalesW (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH EnumSystemLocalesW( LOCALE_ENUMPROCW proc, DWORD flags )
|
||||
{
|
||||
WCHAR name[10];
|
||||
DWORD name_len, type, index = 0;
|
||||
HKEY key;
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, locales_key, 0, KEY_READ, &key )) return FALSE;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
name_len = ARRAY_SIZE(name);
|
||||
if (RegEnumValueW( key, index++, name, &name_len, NULL, &type, NULL, NULL )) break;
|
||||
if (type != REG_SZ) continue;
|
||||
if (!wcstoul( name, NULL, 16 )) continue;
|
||||
if (!proc( name )) break;
|
||||
}
|
||||
RegCloseKey( key );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLocalesEx (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH EnumSystemLocalesEx( LOCALE_ENUMPROCEX proc, DWORD wanted_flags,
|
||||
LPARAM param, void *reserved )
|
||||
{
|
||||
WCHAR buffer[256], name[10];
|
||||
DWORD name_len, type, neutral, flags, index = 0, alt = 0;
|
||||
HKEY key, altkey;
|
||||
LCID lcid;
|
||||
|
||||
if (reserved)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, locales_key, 0, KEY_READ, &key )) return FALSE;
|
||||
if (RegOpenKeyExW( key, altsort_key, 0, KEY_READ, &altkey )) altkey = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
name_len = ARRAY_SIZE(name);
|
||||
if (RegEnumValueW( alt ? altkey : key, index++, name, &name_len, NULL, &type, NULL, NULL ))
|
||||
{
|
||||
if (alt++) break;
|
||||
index = 0;
|
||||
continue;
|
||||
}
|
||||
if (type != REG_SZ) continue;
|
||||
if (!(lcid = wcstoul( name, NULL, 16 ))) continue;
|
||||
|
||||
GetLocaleInfoW( lcid, LOCALE_SNAME | LOCALE_NOUSEROVERRIDE, buffer, ARRAY_SIZE( buffer ));
|
||||
if (!GetLocaleInfoW( lcid, LOCALE_INEUTRAL | LOCALE_NOUSEROVERRIDE | LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&neutral, sizeof(neutral) / sizeof(WCHAR) ))
|
||||
neutral = 0;
|
||||
|
||||
if (alt)
|
||||
flags = LOCALE_ALTERNATE_SORTS;
|
||||
else
|
||||
flags = LOCALE_WINDOWS | (neutral ? LOCALE_NEUTRALDATA : LOCALE_SPECIFICDATA);
|
||||
|
||||
if (wanted_flags && !(flags & wanted_flags)) continue;
|
||||
if (!proc( buffer, flags, param )) break;
|
||||
}
|
||||
RegCloseKey( altkey );
|
||||
RegCloseKey( key );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* FindStringOrdinal (kernelbase.@)
|
||||
*/
|
||||
|
@ -103,6 +435,28 @@ INT WINAPI DECLSPEC_HOTPATCH FindStringOrdinal( DWORD flag, const WCHAR *src, IN
|
|||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* IsValidLanguageGroup (kernelbase.@)
|
||||
*/
|
||||
BOOL WINAPI DECLSPEC_HOTPATCH IsValidLanguageGroup( LGRPID id, DWORD flags )
|
||||
{
|
||||
static const WCHAR format[] = { '%','x',0 };
|
||||
WCHAR name[10], value[10];
|
||||
DWORD type, value_len = sizeof(value);
|
||||
BOOL ret = FALSE;
|
||||
HKEY key;
|
||||
|
||||
if (RegOpenKeyExW( HKEY_LOCAL_MACHINE, language_groups_key, 0, KEY_READ, &key )) return FALSE;
|
||||
|
||||
swprintf( name, ARRAY_SIZE(name), format, id );
|
||||
if (!RegQueryValueExW( key, name, NULL, &type, (BYTE *)value, &value_len ) && type == REG_SZ)
|
||||
ret = (flags & LGRPID_SUPPORTED) || wcstoul( value, NULL, 10 );
|
||||
|
||||
RegCloseKey( key );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* LCIDToLocaleName (kernelbase.@)
|
||||
*/
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
WINE_DEFAULT_DEBUG_CHANNEL(kernelbase);
|
||||
|
||||
|
||||
HANDLE kernel32_handle = 0;
|
||||
|
||||
/***********************************************************************
|
||||
* DllMain
|
||||
*/
|
||||
|
@ -42,6 +44,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
|
|||
if (reason == DLL_PROCESS_ATTACH)
|
||||
{
|
||||
DisableThreadLibraryCalls( hinst );
|
||||
kernel32_handle = GetModuleHandleA( "kernel32.dll" );
|
||||
init_startup_info( NtCurrentTeb()->Peb->ProcessParameters );
|
||||
}
|
||||
return TRUE;
|
||||
|
|
|
@ -716,150 +716,222 @@ HKLM,SOFTWARE\Microsoft\Active Setup\Installed Components\{6BF52A52-394A-11d3-B1
|
|||
HKLM,SOFTWARE\Microsoft\Active Setup\Installed Components\{6BF52A52-394A-11d3-B153-00C04F79FAA6},"Version",2,"12,0,7601,18840"
|
||||
|
||||
[Nls]
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"37",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0401",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0402",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0403",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0404",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0405",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0406",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0407",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0408",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0409",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040b",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040d",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040e",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040f",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0410",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0411",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0412",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0413",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0414",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0415",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0416",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0418",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0419",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041b",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041d",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041e",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041f",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0420",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0421",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0422",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0423",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0424",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0425",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0426",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0427",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0429",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042b",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042d",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042f",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0436",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0437",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0438",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0439",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"043e",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"043f",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0440",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0441",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0443",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0444",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0446",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0447",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0449",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044b",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044e",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044f",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0450",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0452",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0456",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0457",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"045a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0465",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"047e",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"048f",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0490",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0491",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0494",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0801",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0804",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0807",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0809",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"080a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"080c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0810",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0813",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0814",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0816",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"081a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"081d",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"082c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"083e",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0843",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0894",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c01",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c04",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c07",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c09",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c0a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c0c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c1a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c94",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1001",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1004",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1007",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1009",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"100a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"100c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1401",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1404",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1407",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1409",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"140a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"140c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1801",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1809",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"180a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"180c",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1c01",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1c09",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1c0a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2001",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2009",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"200a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2401",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2409",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"240a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2801",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2809",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"280a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2c01",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2c09",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2c0a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3001",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3009",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"300a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3401",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3409",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"340a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3801",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"380a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3c01",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3c0a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"4001",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"400a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"440a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"480a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"4c0a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"500a",,""
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"37",,"c_037.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"424",,"c_424.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"437",,"c_437.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"500",,"c_500.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"737",,"c_737.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"775",,"c_775.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"850",,"c_850.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"852",,"c_852.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"855",,"c_855.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"856",,"c_856.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"857",,"c_857.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"860",,"c_860.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"861",,"c_861.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"862",,"c_862.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"863",,"c_863.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"864",,"c_864.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"865",,"c_865.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"866",,"c_866.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"869",,"c_869.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"874",,"c_874.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"875",,"c_875.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"878",,"c_878.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"932",,"c_932.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"936",,"c_936.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"949",,"c_949.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"950",,"c_950.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1006",,"c_1006.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1026",,"c_1026.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1250",,"c_1250.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1251",,"c_1251.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1252",,"c_1252.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1253",,"c_1253.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1254",,"c_1254.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1255",,"c_1255.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1256",,"c_1256.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1257",,"c_1257.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1258",,"c_1258.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"1361",,"c_1361.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10000",,"c_10000.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10001",,"c_10001.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10002",,"c_10002.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10003",,"c_10003.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10004",,"c_10004.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10005",,"c_10005.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10006",,"c_10006.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10007",,"c_10007.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10008",,"c_10008.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10010",,"c_10010.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10017",,"c_10017.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10021",,"c_10021.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10029",,"c_10029.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10079",,"c_10079.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10081",,"c_10081.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"10082",,"c_10082.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"20127",,"c_20127.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"20866",,"c_20866.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"20932",,"c_20932.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"21866",,"c_21866.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28591",,"c_28591.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28592",,"c_28592.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28593",,"c_28593.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28594",,"c_28594.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28595",,"c_28595.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28596",,"c_28596.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28597",,"c_28597.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28598",,"c_28598.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28599",,"c_28599.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28600",,"c_28600.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28603",,"c_28603.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28604",,"c_28604.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28605",,"c_28605.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Codepage,"28606",,"c_28606.nls"
|
||||
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0401",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0402",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0403",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0404",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0405",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0406",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0407",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0408",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0409",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040b",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040d",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040e",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"040f",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0410",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0411",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0412",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0413",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0414",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0415",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0416",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0418",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0419",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041b",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041d",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041e",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"041f",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0420",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0421",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0422",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0423",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0424",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0425",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0426",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0427",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0429",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042b",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042d",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"042f",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0436",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0437",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0438",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0439",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"043e",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"043f",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0440",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0441",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0443",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0444",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0446",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0447",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0449",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044b",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044e",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"044f",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0450",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0452",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0456",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0457",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"045a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0465",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"047e",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"048f",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0490",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0491",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0494",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0801",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0804",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0807",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0809",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"080a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"080c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0810",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0813",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0814",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0816",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"081a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"081d",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"082c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"083e",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0843",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0894",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c01",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c04",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c07",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c09",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c0a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c0c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c1a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"0c94",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1001",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1004",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1007",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1009",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"100a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"100c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1401",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1404",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1407",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1409",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"140a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"140c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1801",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1809",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"180a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"180c",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1c01",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1c09",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"1c0a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2001",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2009",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"200a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2401",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2409",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"240a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2801",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2809",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"280a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2c01",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2c09",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"2c0a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3001",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3009",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"300a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3401",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3409",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"340a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3801",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"380a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3c01",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"3c0a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"4001",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"400a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"440a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"480a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"4c0a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"500a",,"l_intl.nls"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"Default",,"0409"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Language,"InstallLanguage",,"0409"
|
||||
|
||||
|
@ -904,6 +976,7 @@ HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000413",,"1"
|
|||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000414",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000415",,"2"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000416",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000417",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000418",,"2"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000419",,"5"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"0000041a",,"2"
|
||||
|
@ -936,6 +1009,7 @@ HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000440",,"5"
|
|||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000441",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000443",,"6"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000444",,"5"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000445",,"f"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000446",,"f"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000447",,"f"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000449",,"f"
|
||||
|
@ -948,6 +1022,8 @@ HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000452",,"1"
|
|||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000456",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000457",,"f"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"0000045a",,"d"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"0000045b",,"f"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000461",,"f"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000465",,"d"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"0000047e",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"0000048f",,"1"
|
||||
|
@ -955,6 +1031,7 @@ HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000490",,"1"
|
|||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000491",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000492",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000494",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"000004a5",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000801",,"d"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000804",,"a"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000807",,"1"
|
||||
|
@ -977,6 +1054,7 @@ HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000c07",,"1"
|
|||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000c09",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000c0a",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000c0c",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000c13",,"1"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00000c1a",,"5"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00001001",,"d"
|
||||
HKLM,System\CurrentControlSet\Control\Nls\Locale,"00001004",,"a"
|
||||
|
|
Loading…
Reference in New Issue