MCPcopy Create free account
hub / github.com/LegacyUpdate/LegacyUpdate / GetRegistryString

Function GetRegistryString

shared/Registry.c:9–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7LPVOID DELETE_VALUE = (LPVOID)(INT_MIN + 1);
8
9HRESULT GetRegistryString(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, REGSAM options, LPWSTR *data, LPDWORD size) {
10 if (data == NULL) {
11 return E_POINTER;
12 }
13
14 HKEY subkey = NULL;
15 HRESULT hr = HRESULT_FROM_WIN32(RegOpenKeyEx(key, subkeyPath, 0, GetRegistryWow64Flag(KEY_READ | options), &subkey));
16 if (!SUCCEEDED(hr)) {
17 goto end;
18 }
19
20 if (data) {
21 DWORD length = 0;
22 hr = HRESULT_FROM_WIN32(RegQueryValueEx(subkey, valueName, NULL, NULL, NULL, &length));
23 if (!SUCCEEDED(hr)) {
24 goto end;
25 }
26
27 LPWSTR buffer = (LPWSTR)LocalAlloc(LPTR, length + sizeof(WCHAR));
28 if (!buffer) {
29 hr = E_OUTOFMEMORY;
30 goto end;
31 }
32
33 hr = HRESULT_FROM_WIN32(RegQueryValueEx(subkey, valueName, NULL, NULL, (BYTE *)buffer, &length));
34 if (!SUCCEEDED(hr)) {
35 LocalFree(buffer);
36 goto end;
37 }
38
39 DWORD ourSize = length / sizeof(WCHAR);
40 buffer[ourSize] = L'\0';
41 *data = buffer;
42
43 if (size) {
44 *size = ourSize;
45 }
46 }
47
48end:
49 if (subkey) {
50 RegCloseKey(subkey);
51 }
52 if (!SUCCEEDED(hr)) {
53 *data = NULL;
54 if (size) {
55 *size = 0;
56 }
57 }
58 return hr;
59}
60
61HRESULT GetRegistryDword(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, REGSAM options, LPDWORD data) {
62 HKEY subkey = NULL;

Callers 9

GetOSVersionInfoMethod · 0.85
get_WsusServerUrlMethod · 0.85
GetOSProductNameFunction · 0.85
RegisterServerFunction · 0.85
GetUpdateSiteURLFunction · 0.85
ResetSetupKeyFunction · 0.85
FixUserWallpaperFunction · 0.85
GetInstallPathFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected