From b22e27005a87317a84c9b9be73dde85c7db377b5 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Wed, 19 Sep 2007 17:58:48 -0700 Subject: [PATCH] Respect samDesired in SetupDiOpenClassRegKeyExW --- dlls/setupapi/devinst.c | 56 +++++++++++++++++++++++++++++------------------ 1 files changed, 34 insertions(+), 22 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 5cf70f4..b99c1b5 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -2387,7 +2387,6 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW( PCWSTR MachineName, PVOID Reserved) { - WCHAR bracedGuidString[39]; HKEY hClassesKey; HKEY hClassKey; LPCWSTR lpKeyName; @@ -2413,33 +2412,46 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW( return INVALID_HANDLE_VALUE; } - if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, - lpKeyName, - 0, - KEY_ALL_ACCESS, - &hClassesKey)) + if (!ClassGuid) { - return INVALID_HANDLE_VALUE; - } - - if (ClassGuid == NULL) + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + lpKeyName, + 0, + samDesired, + &hClassesKey)) + { + return INVALID_HANDLE_VALUE; + } return hClassesKey; + } + else + { + WCHAR bracedGuidString[39]; - SETUPDI_GuidToString(ClassGuid, bracedGuidString); + SETUPDI_GuidToString(ClassGuid, bracedGuidString); - if (RegOpenKeyExW(hClassesKey, - bracedGuidString, - 0, - KEY_ALL_ACCESS, - &hClassKey)) - { - RegCloseKey(hClassesKey); - return INVALID_HANDLE_VALUE; - } + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + lpKeyName, + 0, + samDesired, + &hClassesKey)) + { + return INVALID_HANDLE_VALUE; + } + if (RegOpenKeyExW(hClassesKey, + bracedGuidString, + 0, + samDesired, + &hClassKey)) + { + RegCloseKey(hClassesKey); + return INVALID_HANDLE_VALUE; + } - RegCloseKey(hClassesKey); + RegCloseKey(hClassesKey); - return hClassKey; + return hClassKey; + } } /*********************************************************************** -- 1.4.1