80 ok(
hr ==
S_OK,
"Expected S_OK, got %#lx\n",
hr);
83 ok(
size == 39,
"Expected 39, got %#lx\n",
hr);
121 ok_(__FILE__,
line)(
FALSE,
"Key doesn't exist or wrong type\n");
126 ok_(__FILE__,
line)(!
val[0],
"Expected empty string, got %s\n",
val);
136#define CHECK_REG_STR(prodkey, name, expected) \
137 check_reg_str(prodkey, name, expected, TRUE, __LINE__);
162 skip(
"User SID not available -> skipping MsiSourceListGetInfoA tests\n");
241 "Expected ERROR_UNKNOWN_PRODUCT or ERROR_INVALID_PARAMETER, got %d\n",
r);
243 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
269 data =
"msitest.msi";
278 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
288 ok(
size == 11,
"Expected 11, got %lu\n",
size);
296 ok(
size == 11,
"Expected 11, got %lu\n",
size);
334 ok(
size == 11,
"Expected 11, got %lu\n",
size);
552 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Patches\\");
603 skip(
"process is limited\n");
610 skip(
"User SID not available -> skipping MsiSourceListAddSourceExA tests\n");
652 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
679 ok(
size == 11,
"Expected 11, got %lu\n",
size);
690 ok(
size == 11,
"Expected 11, got %lu\n",
size);
713 ok(
size == 11,
"Expected 11, got %lu\n",
size);
736 ok(
size == 11,
"Expected 11, got %lu\n",
size);
779 ok(
size == 11,
"Expected 11, got %lu\n",
size);
814 ok(
size == 11,
"Expected 11, got %lu\n",
size);
841 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
843 lstrcatA(keypath,
"\\Installer\\Products\\");
849 skip(
"Product key creation failed with error code %ld\n",
res);
874 ok(
size == 11,
"Expected 11, got %lu\n",
size);
891 ok(
size == 11,
"Expected 11, got %lu\n",
size);
914 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
920 skip(
"Product key creation failed with error code %ld\n",
res);
938 skip(
"MsiSourceListAddSourceEx (insufficient privileges)\n");
950 ok(
size == 11,
"Expected 11, got %lu\n",
size);
967 HKEY prodkey, userkey;
975 skip(
"User SID not available -> skipping MsiSourceListEnumSourcesA tests\n");
989 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
996 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1003 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1011 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1019 ok(
size == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n",
size);
1031 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
1086 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1095 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1114 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1139 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1148 ok(
size == 6,
"Expected 6, got %lu\n",
size);
1184 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1259 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1279 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
1281 lstrcatA(keypath,
"\\Installer\\Products\\");
1287 skip(
"Product key creation failed with error code %ld\n",
res);
1334 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1343 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1380 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1411 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
1417 skip(
"Product key creation failed with error code %ld\n",
res);
1465 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1474 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1511 ok(
size == 5,
"Expected 5, got %lu\n",
size);
1528 HKEY prodkey, userkey;
1537 skip(
"process is limited\n");
1544 skip(
"User SID not available -> skipping MsiSourceListSetInfoA tests\n");
1622 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
1802 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
1804 lstrcatA(keypath,
"\\Installer\\Products\\");
1810 skip(
"Product key creation failed with error code %ld\n",
res);
1843 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
1849 skip(
"Product key creation failed with error code %ld\n",
res);
1867 skip(
"MsiSourceListSetInfo (insufficient privileges)\n");
1898 HKEY prodkey, userkey;
1907 skip(
"process is limited\n");
1914 skip(
"User SID not available -> skipping MsiSourceListAddMediaDiskA tests\n");
1954 1,
"label",
"prompt");
1961 1,
"label",
"prompt");
1968 1,
"label",
"prompt");
1973 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2088 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
2090 lstrcatA(keypath,
"\\Installer\\Products\\");
2096 skip(
"Product key creation failed with error code %ld\n",
res);
2130 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
2136 skip(
"Product key creation failed with error code %ld\n",
res);
2154 skip(
"MsiSourceListAddMediaDisk (insufficient privileges)\n");
2198 skip(
"User SID not available -> skipping MsiSourceListEnumMediaDisksA tests\n");
2208 labelsz =
sizeof(
label);
2209 promptsz =
sizeof(prompt);
2215 labelsz =
sizeof(
label);
2216 promptsz =
sizeof(prompt);
2222 labelsz =
sizeof(
label);
2223 promptsz =
sizeof(prompt);
2229 labelsz =
sizeof(
label);
2230 promptsz =
sizeof(prompt);
2237 labelsz =
sizeof(
label);
2238 promptsz =
sizeof(prompt);
2245 labelsz =
sizeof(
label);
2246 promptsz =
sizeof(prompt);
2249 0, &
id,
label, &labelsz, prompt, &promptsz);
2253 labelsz =
sizeof(
label);
2254 promptsz =
sizeof(prompt);
2257 0, &
id,
label, &labelsz, prompt, &promptsz);
2261 labelsz =
sizeof(
label);
2262 promptsz =
sizeof(prompt);
2269 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
2276 labelsz =
sizeof(
label);
2277 promptsz =
sizeof(prompt);
2288 labelsz = 0xdeadbeef;
2290 promptsz = 0xdeadbeef;
2294 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2296 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2297 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2298 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2306 labelsz = 0xdeadbeef;
2308 promptsz = 0xdeadbeef;
2312 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2314 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2315 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2316 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2330 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2332 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2333 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2334 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2346 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2349 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2350 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2351 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2363 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2366 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2368 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2369 ok(!
lstrcmpA(prompt,
"two"),
"Expected \"two\", got \"%s\"\n", prompt);
2370 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2374 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2376 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2377 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2378 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2393 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2395 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2396 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2397 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2408 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2410 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2411 ok(!
lstrcmpA(prompt,
"two"),
"Expected \"two\", got \"%s\"\n", prompt);
2412 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2423 ok(
id == 4,
"Expected 4, got %lu\n",
id);
2425 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2426 ok(!
lstrcmpA(prompt,
"four"),
"Expected \"four\", got \"%s\"\n", prompt);
2427 ok(promptsz == 4,
"Expected 4, got %lu\n", promptsz);
2438 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2440 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2441 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2442 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2453 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2455 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2456 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2457 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2468 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2470 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2471 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2472 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2483 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2485 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2486 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2487 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2498 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2500 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2501 ok(!
lstrcmpA(prompt,
"two"),
"Expected \"two\", got \"%s\"\n", prompt);
2502 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2513 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2515 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2516 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2517 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2528 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2529 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2530 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2540 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2543 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2544 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2545 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2546 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2556 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2557 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2558 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2568 "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n",
r);
2571 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2573 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2574 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2587 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2589 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2590 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2600 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2602 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2612 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2614 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2615 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2624 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2631 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2642 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2643 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2644 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2655 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2656 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2657 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2671 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2673 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2674 ok(!
lstrcmpA(prompt,
"label"),
"Expected \"label\", got \"%s\"\n", prompt);
2675 ok(promptsz == 5,
"Expected 5, got %lu\n", promptsz);
2689 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2691 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2692 ok(!
lstrcmpA(prompt,
""),
"Expected \"\", got \"%s\"\n", prompt);
2693 ok(promptsz == 0,
"Expected 0, got %lu\n", promptsz);
2707 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2709 ok(labelsz == 0,
"Expected 0, got %lu\n", labelsz);
2710 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2711 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2725 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2727 ok(labelsz == 0,
"Expected 0, got %lu\n", labelsz);
2728 ok(!
lstrcmpA(prompt,
""),
"Expected \"\", got \"%s\"\n", prompt);
2729 ok(promptsz == 0,
"Expected 0, got %lu\n", promptsz);
2744 ok(
id == 1,
"Expected 1, got %lu\n",
id);
2746 ok(labelsz == 3,
"Expected 3, got %lu\n", labelsz);
2747 ok(!
lstrcmpA(prompt,
"#42"),
"Expected \"#42\", got \"%s\"\n", prompt);
2748 ok(promptsz == 3,
"Expected 3, got %lu\n", promptsz);
2762 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
2764 lstrcatA(keypath,
"\\Installer\\Products\\");
2770 skip(
"Product key creation failed with error code %ld\n",
res);
2785 labelsz = 0xdeadbeef;
2787 promptsz = 0xdeadbeef;
2791 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2793 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2794 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2795 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2803 labelsz = 0xdeadbeef;
2805 promptsz = 0xdeadbeef;
2809 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2811 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2812 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2813 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2827 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2829 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2830 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2831 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2844 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
2850 skip(
"Product key creation failed with error code %ld\n",
res);
2866 labelsz = 0xdeadbeef;
2868 promptsz = 0xdeadbeef;
2872 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2874 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2875 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2876 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2884 labelsz = 0xdeadbeef;
2886 promptsz = 0xdeadbeef;
2890 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2892 ok(labelsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", labelsz);
2893 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2894 ok(promptsz == 0xdeadbeef,
"Expected 0xdeadbeef, got %lu\n", promptsz);
2908 ok(
id == 2,
"Expected 2, got %lu\n",
id);
2910 ok(labelsz == 5,
"Expected 5, got %lu\n", labelsz);
2911 ok(!
lstrcmpA(prompt,
"prompt"),
"Expected \"prompt\", got \"%s\"\n", prompt);
2912 ok(promptsz == 6,
"Expected 6, got %lu\n", promptsz);
2923 ok(
id == 0xbeef,
"Expected 0xbeef, got %lu\n",
id);
2925 ok(labelsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", labelsz);
2926 ok(!
lstrcmpA(prompt,
"bbb"),
"Expected \"bbb\", got \"%s\"\n", prompt);
2927 ok(promptsz ==
MAX_PATH,
"Expected MAX_PATH, got %lu\n", promptsz);
2954 skip(
"process is limited\n");
2961 skip(
"User SID not available -> skipping MsiSourceListAddSourceA tests\n");
3012 lstrcpyA(keypath,
"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
3014 lstrcatA(keypath,
"\\Installer\\Products\\");
3020 skip(
"Product key creation failed with error code %ld\n",
res);
3021 goto userunmanaged_tests;
3117 lstrcpyA(keypath,
"Software\\Microsoft\\Installer\\Products\\");
3123 skip(
"Product key creation failed with error code %ld\n",
res);
3158 lstrcpyA(keypath,
"Software\\Classes\\Installer\\Products\\");
3164 skip(
"Product key creation failed with error code %ld\n",
res);
3184 skip(
"MsiSourceListAddSource (insufficient privileges)\n");
void user(int argc, const char *argv[])
#define RegCloseKey(hKey)
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegDeleteKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ REGSAM samDesired, _In_ DWORD Reserved)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegCreateKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD Reserved, _In_ LPSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_ LPDWORD lpdwDisposition)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
BOOL WINAPI ConvertSidToStringSidA(PSID Sid, LPSTR *StringSid)
#define ERROR_INVALID_PARAMETER
#define GetCurrentProcess()
#define ERROR_NO_MORE_ITEMS
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
static const WCHAR valueW[]
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
UINT WINAPI MsiSourceListEnumSourcesA(const char *szProductCodeOrPatch, const char *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwIndex, char *szSource, DWORD *pcchSource)
UINT WINAPI MsiSourceListEnumMediaDisksA(const char *szProductCodeOrPatchCode, const char *szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwIndex, DWORD *pdwDiskId, char *szVolumeLabel, DWORD *pcchVolumeLabel, char *szDiskPrompt, DWORD *pcchDiskPrompt)
UINT WINAPI MsiSourceListAddSourceExA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCSTR szSource, DWORD dwIndex)
UINT WINAPI MsiSourceListSetInfoA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCSTR szProperty, LPCSTR szValue)
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue)
UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwDiskId, LPCSTR szVolumeLabel, LPCSTR szDiskPrompt)
UINT WINAPI MsiSourceListAddSourceA(LPCSTR szProduct, LPCSTR szUserName, DWORD dwReserved, LPCSTR szSource)
UINT WINAPI MsiSourceListGetInfoA(LPCSTR szProduct, LPCSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCSTR szProperty, LPSTR szValue, LPDWORD pcchValue)
HRESULT WINAPI CoCreateGuid(GUID *pguid)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
static BOOL is_process_elevated(void)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLuint GLint GLboolean GLint GLenum access
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
HLOCAL NTAPI LocalFree(HLOCAL hMem)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define ERROR_FILE_NOT_FOUND
static const WCHAR label[]
void restart_as_admin_elevated(void)
static char * get_user_sid(void)
static void test_MsiSourceListAddMediaDisk(void)
static void test_MsiSourceListSetInfo(void)
#define CHECK_REG_STR(prodkey, name, expected)
static void test_MsiSourceListAddSource(void)
static void test_MsiSourceListGetInfo(void)
static void test_MsiSourceListAddSourceEx(void)
static WCHAR * strdupAW(const char *str)
static void check_reg_str(HKEY prodkey, LPCSTR name, LPCSTR expected, BOOL bcase, DWORD line)
static void test_MsiSourceListEnumMediaDisks(void)
static void create_test_guid(LPSTR prodcode, LPSTR squashed)
static void test_MsiSourceListEnumSources(void)
#define INSTALLPROPERTY_LASTUSEDTYPEA
#define INSTALLPROPERTY_MEDIAPACKAGEPATHA
#define INSTALLPROPERTY_LASTUSEDSOURCEA
#define INSTALLPROPERTY_DISKPROMPTA
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[]
@ MSIINSTALLCONTEXT_MACHINE
@ MSIINSTALLCONTEXT_ALLUSERMANAGED
@ MSIINSTALLCONTEXT_USERUNMANAGED
@ MSIINSTALLCONTEXT_USERMANAGED
#define INSTALLPROPERTY_PACKAGENAMEA
BOOL squash_guid(LPCWSTR in, LPWSTR out)
BOOLEAN WINAPI GetUserNameExA(EXTENDED_NAME_FORMAT NameFormat, LPSTR lpNameBuffer, PULONG nSize)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
#define ERROR_UNKNOWN_PRODUCT
#define ERROR_UNKNOWN_PATCH
#define ERROR_UNKNOWN_PROPERTY
#define ERROR_BAD_CONFIGURATION
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER