mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From 60593e8bfdaa748bd006f364a1f134e79066f6a5 Mon Sep 17 00:00:00 2001
|
|
From: Sebastian Lackner <sebastian@fds-team.de>
|
|
Date: Sun, 28 Feb 2016 03:36:07 +0100
|
|
Subject: setupapi: DelReg should recursively delete registry keys.
|
|
|
|
---
|
|
dlls/setupapi/install.c | 7 ++++++-
|
|
dlls/setupapi/tests/install.c | 1 -
|
|
2 files changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/dlls/setupapi/install.c b/dlls/setupapi/install.c
|
|
index a8d38aa..2aefc16 100644
|
|
--- a/dlls/setupapi/install.c
|
|
+++ b/dlls/setupapi/install.c
|
|
@@ -302,6 +302,7 @@ static void delete_multi_sz_value( HKEY hkey, const WCHAR *value, const WCHAR *s
|
|
*/
|
|
static BOOL do_reg_operation( HKEY hkey, const WCHAR *value, INFCONTEXT *context, INT flags )
|
|
{
|
|
+ static const WCHAR emptyW[] = {0};
|
|
DWORD type, size;
|
|
|
|
if (flags & (FLG_ADDREG_DELREG_BIT | FLG_ADDREG_DELVAL)) /* deletion */
|
|
@@ -320,7 +321,11 @@ static BOOL do_reg_operation( HKEY hkey, const WCHAR *value, INFCONTEXT *context
|
|
}
|
|
else RegDeleteValueW( hkey, value );
|
|
}
|
|
- else NtDeleteKey( hkey );
|
|
+ else
|
|
+ {
|
|
+ RegDeleteTreeW( hkey, NULL );
|
|
+ RegDeleteKeyW( hkey, emptyW );
|
|
+ }
|
|
return TRUE;
|
|
}
|
|
|
|
diff --git a/dlls/setupapi/tests/install.c b/dlls/setupapi/tests/install.c
|
|
index d12d683..e09ac8e 100644
|
|
--- a/dlls/setupapi/tests/install.c
|
|
+++ b/dlls/setupapi/tests/install.c
|
|
@@ -174,7 +174,6 @@ static void test_registry(void)
|
|
|
|
/* Check if the registry key is recursively deleted */
|
|
res = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\setupapitest", &key);
|
|
- todo_wine
|
|
ok(res == ERROR_FILE_NOT_FOUND, "Didn't expect the registry key to exist\n");
|
|
/* Just in case */
|
|
if (res == ERROR_SUCCESS)
|
|
--
|
|
2.7.1
|
|
|