diff --git a/dlls/kernelbase/registry.c b/dlls/kernelbase/registry.c index 137c0efb885..4f2234b1ef4 100644 --- a/dlls/kernelbase/registry.c +++ b/dlls/kernelbase/registry.c @@ -50,40 +50,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(reg); #define HKEY_SPECIAL_ROOT_FIRST HKEY_CLASSES_ROOT #define HKEY_SPECIAL_ROOT_LAST HKEY_DYN_DATA -static const WCHAR name_CLASSES_ROOT[] = - {'\\','R','e','g','i','s','t','r','y','\\', - 'M','a','c','h','i','n','e','\\', - 'S','o','f','t','w','a','r','e','\\', - 'C','l','a','s','s','e','s',0}; -static const WCHAR name_LOCAL_MACHINE[] = - {'\\','R','e','g','i','s','t','r','y','\\', - 'M','a','c','h','i','n','e',0}; -static const WCHAR name_USERS[] = - {'\\','R','e','g','i','s','t','r','y','\\', - 'U','s','e','r',0}; -static const WCHAR name_PERFORMANCE_DATA[] = - {'\\','R','e','g','i','s','t','r','y','\\', - 'P','e','r','f','D','a','t','a',0}; -static const WCHAR name_CURRENT_CONFIG[] = - {'\\','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','\\', - 'H','a','r','d','w','a','r','e',' ','P','r','o','f','i','l','e','s','\\', - 'C','u','r','r','e','n','t',0}; -static const WCHAR name_DYN_DATA[] = - {'\\','R','e','g','i','s','t','r','y','\\', - 'D','y','n','D','a','t','a',0}; - static const WCHAR * const root_key_names[] = { - name_CLASSES_ROOT, + L"\\Registry\\Machine\\Software\\Classes", NULL, /* HKEY_CURRENT_USER is determined dynamically */ - name_LOCAL_MACHINE, - name_USERS, - name_PERFORMANCE_DATA, - name_CURRENT_CONFIG, - name_DYN_DATA + L"\\Registry\\Machine", + L"\\Registry\\User", + L"\\Registry\\PerfData", + L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\Current", + L"\\Registry\\DynData" }; static HKEY special_root_keys[ARRAY_SIZE(root_key_names)]; @@ -125,16 +100,12 @@ static inline BOOL is_version_nt(void) static BOOL is_wow6432node( const UNICODE_STRING *name ) { - static const WCHAR wow6432nodeW[] = {'W','o','w','6','4','3','2','N','o','d','e'}; - - return (name->Length == sizeof(wow6432nodeW) && - !wcsnicmp( name->Buffer, wow6432nodeW, ARRAY_SIZE( wow6432nodeW ))); + return (name->Length == 11 * sizeof(WCHAR) && !wcsnicmp( name->Buffer, L"Wow6432Node", 11 )); } /* open the Wow6432Node subkey of the specified key */ static HANDLE open_wow6432node( HANDLE key ) { - static const WCHAR wow6432nodeW[] = {'W','o','w','6','4','3','2','N','o','d','e',0}; OBJECT_ATTRIBUTES attr; UNICODE_STRING nameW; HANDLE ret; @@ -145,7 +116,7 @@ static HANDLE open_wow6432node( HANDLE key ) attr.Attributes = 0; attr.SecurityDescriptor = NULL; attr.SecurityQualityOfService = NULL; - RtlInitUnicodeString( &nameW, wow6432nodeW ); + RtlInitUnicodeString( &nameW, L"Wow6432Node" ); if (NtOpenKeyEx( &ret, MAXIMUM_ALLOWED, &attr, 0 )) ret = 0; return ret; } @@ -162,15 +133,12 @@ static NTSTATUS create_key( HKEY *retkey, ACCESS_MASK access, OBJECT_ATTRIBUTES if (status == STATUS_OBJECT_NAME_NOT_FOUND) { - static const WCHAR registry_root[] = {'\\','R','e','g','i','s','t','r','y','\\'}; WCHAR *buffer = attr->ObjectName->Buffer; DWORD attrs, pos = 0, i = 0, len = attr->ObjectName->Length / sizeof(WCHAR); UNICODE_STRING str; /* don't try to create registry root */ - if (!attr->RootDirectory && len > ARRAY_SIZE( registry_root ) && - !wcsnicmp( buffer, registry_root, ARRAY_SIZE( registry_root ))) - i += ARRAY_SIZE( registry_root ); + if (!attr->RootDirectory && len > 10 && !wcsnicmp( buffer, L"\\Registry\\", 10 )) i += 10; while (i < len && buffer[i] != '\\') i++; if (i == len && !force_wow32) return status; @@ -1221,11 +1189,6 @@ static void *get_provider_entry(HKEY perf, HMODULE perflib, const char *name) static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *provider) { - static const WCHAR object_listW[] = { 'O','b','j','e','c','t',' ','L','i','s','t',0 }; - static const WCHAR performanceW[] = { 'P','e','r','f','o','r','m','a','n','c','e',0 }; - static const WCHAR libraryW[] = { 'L','i','b','r','a','r','y',0 }; - static const WCHAR linkageW[] = { 'L','i','n','k','a','g','e',0 }; - static const WCHAR exportW[] = { 'E','x','p','o','r','t',0 }; WCHAR buf[MAX_PATH], buf2[MAX_PATH]; DWORD err, type, len; HKEY service, perf; @@ -1235,11 +1198,11 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr return FALSE; provider->linkage[0] = 0; - err = RegOpenKeyExW(service, linkageW, 0, KEY_READ, &perf); + err = RegOpenKeyExW(service, L"Linkage", 0, KEY_READ, &perf); if (err == ERROR_SUCCESS) { len = sizeof(buf) - sizeof(WCHAR); - err = RegQueryValueExW(perf, exportW, NULL, &type, (BYTE *)buf, &len); + err = RegQueryValueExW(perf, L"Export", NULL, &type, (BYTE *)buf, &len); if (err == ERROR_SUCCESS && (type == REG_SZ || type == REG_MULTI_SZ)) { memcpy(provider->linkage, buf, len); @@ -1249,14 +1212,14 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr RegCloseKey(perf); } - err = RegOpenKeyExW(service, performanceW, 0, KEY_READ, &perf); + err = RegOpenKeyExW(service, L"Performance", 0, KEY_READ, &perf); RegCloseKey(service); if (err != ERROR_SUCCESS) return FALSE; provider->objects[0] = 0; len = sizeof(buf) - sizeof(WCHAR); - err = RegQueryValueExW(perf, object_listW, NULL, &type, (BYTE *)buf, &len); + err = RegQueryValueExW(perf, L"Object List", NULL, &type, (BYTE *)buf, &len); if (err == ERROR_SUCCESS && (type == REG_SZ || type == REG_MULTI_SZ)) { memcpy(provider->objects, buf, len); @@ -1265,7 +1228,7 @@ static BOOL load_provider(HKEY root, const WCHAR *name, struct perf_provider *pr } len = sizeof(buf) - sizeof(WCHAR); - err = RegQueryValueExW(perf, libraryW, NULL, &type, (BYTE *)buf, &len); + err = RegQueryValueExW(perf, L"Library", NULL, &type, (BYTE *)buf, &len); if (err != ERROR_SUCCESS || !(type == REG_SZ || type == REG_EXPAND_SZ)) goto error; @@ -1305,12 +1268,11 @@ error: static DWORD collect_data(struct perf_provider *provider, const WCHAR *query, void **data, DWORD *size, DWORD *obj_count) { - static const WCHAR globalW[] = { 'G','l','o','b','a','l',0 }; WCHAR *linkage = provider->linkage[0] ? provider->linkage : NULL; DWORD err; if (!query || !query[0]) - query = globalW; + query = L"Global"; err = provider->pOpen(linkage); if (err != ERROR_SUCCESS) @@ -1335,9 +1297,6 @@ static DWORD collect_data(struct perf_provider *provider, const WCHAR *query, vo static DWORD query_perf_data(const WCHAR *query, DWORD *type, void *data, DWORD *ret_size) { - static const WCHAR SZ_SERVICES_KEY[] = { 'S','y','s','t','e','m','\\', - 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', - 'S','e','r','v','i','c','e','s',0 }; DWORD err, i, data_size; HKEY root; PERF_DATA_BLOCK *pdb; @@ -1396,7 +1355,7 @@ static DWORD query_perf_data(const WCHAR *query, DWORD *type, void *data, DWORD data_size -= pdb->HeaderLength; data = (char *)data + pdb->HeaderLength; - err = RegOpenKeyExW(HKEY_LOCAL_MACHINE, SZ_SERVICES_KEY, 0, KEY_READ, &root); + err = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"System\\CurrentControlSet\\Services", 0, KEY_READ, &root); if (err != ERROR_SUCCESS) return err; @@ -2859,7 +2818,6 @@ LSTATUS WINAPI RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, LPSTR pszBuffer, DW */ LSTATUS WINAPI RegDeleteTreeW( HKEY hkey, const WCHAR *subkey ) { - static const WCHAR emptyW[] = {0}; DWORD name_size, max_name, max_subkey; WCHAR *name_buf = NULL; LONG ret; @@ -2898,7 +2856,7 @@ LSTATUS WINAPI RegDeleteTreeW( HKEY hkey, const WCHAR *subkey ) /* Delete the key itself */ if (subkey && *subkey) { - ret = RegDeleteKeyExW( hkey, emptyW, 0, 0 ); + ret = RegDeleteKeyExW( hkey, L"", 0, 0 ); goto cleanup; } @@ -3916,10 +3874,6 @@ BOOL WINAPI SHRegGetBoolUSValueA(const char *subkey, const char *value, BOOL ign BOOL WINAPI SHRegGetBoolUSValueW(const WCHAR *subkey, const WCHAR *value, BOOL ignore_hkcu, BOOL default_value) { - static const WCHAR yesW[]= {'Y','E','S',0}; - static const WCHAR trueW[] = {'T','R','U','E',0}; - static const WCHAR noW[] = {'N','O',0}; - static const WCHAR falseW[] = {'F','A','L','S','E',0}; BOOL ret = default_value; DWORD type, datalen; WCHAR data[10]; @@ -3933,9 +3887,9 @@ BOOL WINAPI SHRegGetBoolUSValueW(const WCHAR *subkey, const WCHAR *value, BOOL i { case REG_SZ: data[9] = '\0'; - if (!lstrcmpiW(data, yesW) || !lstrcmpiW(data, trueW)) + if (!lstrcmpiW(data, L"yes") || !lstrcmpiW(data, L"true")) ret = TRUE; - else if (!lstrcmpiW(data, noW) || !lstrcmpiW(data, falseW)) + else if (!lstrcmpiW(data, L"no") || !lstrcmpiW(data, L"false")) ret = FALSE; break; case REG_DWORD: