From ecc956fb92f485c712fef4458e86ddc292d167ae Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Fri, 21 Sep 2007 11:32:24 -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 bc51c2a..a91b120 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -2337,7 +2337,6 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW( PCWSTR MachineName, PVOID Reserved) { - WCHAR bracedGuidString[39]; HKEY hClassesKey; HKEY hClassKey; LPCWSTR lpKeyName; @@ -2363,33 +2362,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