Hugh McMaster : regedit/tests: Comprehensively check for elevated privileges before starting tests.

Alexandre Julliard julliard at winehq.org
Thu Feb 25 16:45:36 CST 2021


Module: wine
Branch: master
Commit: bedd54c968d3bb3e17c014c93ef38e8b0a7eb042
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=bedd54c968d3bb3e17c014c93ef38e8b0a7eb042

Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date:   Thu Feb 25 18:26:14 2021 +1100

regedit/tests: Comprehensively check for elevated privileges before starting tests.

Calls to regedit.exe on user accounts with standard privileges trigger a UAC
prompt. Not responding to the prompt eventually causes a test timeout, so
use registry API calls to determine if the tests are running with elevated
privileges.

Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/regedit/tests/regedit.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/programs/regedit/tests/regedit.c b/programs/regedit/tests/regedit.c
index f9c12afb880..8c6e71907c0 100644
--- a/programs/regedit/tests/regedit.c
+++ b/programs/regedit/tests/regedit.c
@@ -3741,16 +3741,27 @@ static void test_export(void)
 
 START_TEST(regedit)
 {
-    if(!exec_import_str("REGEDIT4\r\n\r\n")){
-        win_skip("regedit not available, skipping regedit tests\n");
-        return;
-    }
+    HKEY hkey;
+    LONG err;
 
-    if (!run_regedit_exe("regedit.exe /s test.reg") && GetLastError() == ERROR_ELEVATION_REQUIRED)
+    /* Check if regedit.exe is running with elevated privileges */
+    err = RegDeleteKeyA(HKEY_CLASSES_ROOT, KEY_BASE);
+    if (err == ERROR_ACCESS_DENIED)
     {
         win_skip("User is a non-elevated admin; skipping regedit tests.\n");
         return;
     }
+    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("User is a non-elevated admin; skipping regedit tests.\n");
+            return;
+        }
+        RegCloseKey(hkey);
+        RegDeleteKeyA(HKEY_CLASSES_ROOT, KEY_BASE);
+    }
 
     test_basic_import();
     test_basic_import_unicode();




More information about the wine-cvs mailing list