From 0b6ea9f2d7923d770a22e2e7887b76529e305be2 Mon Sep 17 00:00:00 2001 From: winesync Date: Sun, 16 Jan 2022 20:10:04 +0100 Subject: [PATCH] [WINESYNC] reg/tests: Comprehensively check for elevated privileges before starting Windows 3.1 import tests. The existing check fails to adequately determine the program's elevation status on systems where the test key already exists. This can cause all Windows 3.1 import tests to fail on systems with a standard user account. Signed-off-by: Hugh McMaster Signed-off-by: Alexandre Julliard wine commit id 17023a8100a62852bbad342e5e7c705cafae9a1f by Hugh McMaster --- modules/rostests/winetests/reg/import.c | 21 +++++++++++++++------ sdk/tools/winesync/reg.cfg | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/rostests/winetests/reg/import.c b/modules/rostests/winetests/reg/import.c index f769e0020f5..58831625fa5 100644 --- a/modules/rostests/winetests/reg/import.c +++ b/modules/rostests/winetests/reg/import.c @@ -3468,25 +3468,34 @@ static void test_import_win31(void) { LONG err; HKEY hkey; - DWORD dispos, r; + DWORD r; /* Check if reg.exe is running with elevated privileges */ - err = RegCreateKeyExA(HKEY_CLASSES_ROOT, KEY_BASE, 0, NULL, REG_OPTION_NON_VOLATILE, - KEY_READ|KEY_SET_VALUE, NULL, &hkey, &dispos); + err = RegDeleteKeyA(HKEY_CLASSES_ROOT, KEY_BASE); if (err == ERROR_ACCESS_DENIED) { win_skip("reg.exe is not running with elevated privileges; " "skipping Windows 3.1 import tests\n"); return; } - - if (dispos == REG_OPENED_EXISTING_KEY) - delete_value(hkey, NULL); + if (err == ERROR_FILE_NOT_FOUND) + { + if (RegCreateKeyExA(HKEY_CLASSES_ROOT, KEY_BASE, 0, NULL, REG_OPTION_NON_VOLATILE, + KEY_READ, NULL, &hkey, NULL)) + { + win_skip("reg.exe is not running with elevated privileges; " + "skipping Windows 3.1 import tests\n"); + return; + } + RegCloseKey(hkey); + RegDeleteKeyA(HKEY_CLASSES_ROOT, KEY_BASE); + } /* Test simple value */ test_import_str("REGEDIT\r\n" "HKEY_CLASSES_ROOT\\" KEY_BASE " = Value0\r\n", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); + open_key(HKEY_CLASSES_ROOT, KEY_BASE, KEY_SET_VALUE, &hkey); verify_reg(hkey, "", REG_SZ, "Value0", 7, 0); /* Test proper handling of spaces and equals signs */ diff --git a/sdk/tools/winesync/reg.cfg b/sdk/tools/winesync/reg.cfg index f80ded2a20a..2231ec227a9 100644 --- a/sdk/tools/winesync/reg.cfg +++ b/sdk/tools/winesync/reg.cfg @@ -4,4 +4,4 @@ directories: files: programs/reg/resource.h: base/applications/cmdutils/reg/resource.h tags: - wine: b369af9ac5861f0ec49933ef657a53feeafefc21 + wine: 17023a8100a62852bbad342e5e7c705cafae9a1f