[PATCH 1/2] regedit/tests: Comprehensively check for elevated privileges before starting tests
Hugh McMaster
hugh.mcmaster at outlook.com
Thu Feb 25 01:26:14 CST 2021
Calls to regedit.exe on user accounts wit 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>
---
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();
--
2.30.1
More information about the wine-devel
mailing list