mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 18:02:05 +00:00
Fix access rights when opening registry keys
Better traces svn path=/trunk/; revision=19519
This commit is contained in:
parent
1361420584
commit
c4cc828696
1 changed files with 39 additions and 18 deletions
|
@ -149,13 +149,14 @@ BOOL WINAPI SetupDiBuildClassInfoListExW(
|
||||||
LONG lError;
|
LONG lError;
|
||||||
DWORD dwGuidListIndex = 0;
|
DWORD dwGuidListIndex = 0;
|
||||||
|
|
||||||
TRACE("\n");
|
TRACE("0x%lx %p %lu %p %s %p\n", Flags, ClassGuidList,
|
||||||
|
ClassGuidListSize, RequiredSize, debugstr_w(MachineName), Reserved);
|
||||||
|
|
||||||
if (RequiredSize != NULL)
|
if (RequiredSize != NULL)
|
||||||
*RequiredSize = 0;
|
*RequiredSize = 0;
|
||||||
|
|
||||||
hClassesKey = SetupDiOpenClassRegKeyExW(NULL,
|
hClassesKey = SetupDiOpenClassRegKeyExW(NULL,
|
||||||
KEY_ALL_ACCESS,
|
KEY_ENUMERATE_SUB_KEYS,
|
||||||
DIOCR_INSTALLER,
|
DIOCR_INSTALLER,
|
||||||
MachineName,
|
MachineName,
|
||||||
Reserved);
|
Reserved);
|
||||||
|
@ -178,12 +179,12 @@ BOOL WINAPI SetupDiBuildClassInfoListExW(
|
||||||
TRACE("RegEnumKeyExW() returns %ld\n", lError);
|
TRACE("RegEnumKeyExW() returns %ld\n", lError);
|
||||||
if (lError == ERROR_SUCCESS || lError == ERROR_MORE_DATA)
|
if (lError == ERROR_SUCCESS || lError == ERROR_MORE_DATA)
|
||||||
{
|
{
|
||||||
TRACE("Key name: %p\n", szKeyName);
|
TRACE("Key name: %s\n", debugstr_w(szKeyName));
|
||||||
|
|
||||||
if (RegOpenKeyExW(hClassesKey,
|
if (RegOpenKeyExW(hClassesKey,
|
||||||
szKeyName,
|
szKeyName,
|
||||||
0,
|
0,
|
||||||
KEY_ALL_ACCESS,
|
KEY_QUERY_VALUE,
|
||||||
&hClassKey))
|
&hClassKey))
|
||||||
{
|
{
|
||||||
RegCloseKey(hClassesKey);
|
RegCloseKey(hClassesKey);
|
||||||
|
@ -230,14 +231,14 @@ BOOL WINAPI SetupDiBuildClassInfoListExW(
|
||||||
|
|
||||||
RegCloseKey(hClassKey);
|
RegCloseKey(hClassKey);
|
||||||
|
|
||||||
TRACE("Guid: %p\n", szKeyName);
|
TRACE("Guid: %s\n", debugstr_w(szKeyName));
|
||||||
if (dwGuidListIndex < ClassGuidListSize)
|
if (dwGuidListIndex < ClassGuidListSize)
|
||||||
{
|
{
|
||||||
if (szKeyName[0] == L'{' && szKeyName[37] == L'}')
|
if (szKeyName[0] == L'{' && szKeyName[37] == L'}')
|
||||||
{
|
{
|
||||||
szKeyName[37] = 0;
|
szKeyName[37] = 0;
|
||||||
}
|
}
|
||||||
TRACE("Guid: %p\n", &szKeyName[1]);
|
TRACE("Guid: %s\n", debugstr_w(&szKeyName[1]));
|
||||||
|
|
||||||
UuidFromStringW(&szKeyName[1],
|
UuidFromStringW(&szKeyName[1],
|
||||||
&ClassGuidList[dwGuidListIndex]);
|
&ClassGuidList[dwGuidListIndex]);
|
||||||
|
@ -355,6 +356,9 @@ BOOL WINAPI SetupDiClassGuidsFromNameExW(
|
||||||
LONG lError;
|
LONG lError;
|
||||||
DWORD dwGuidListIndex = 0;
|
DWORD dwGuidListIndex = 0;
|
||||||
|
|
||||||
|
TRACE("%s %p %lu %p %s %p\n", debugstr_w(ClassName), ClassGuidList,
|
||||||
|
ClassGuidListSize, RequiredSize, debugstr_w(MachineName), Reserved);
|
||||||
|
|
||||||
if (RequiredSize != NULL)
|
if (RequiredSize != NULL)
|
||||||
*RequiredSize = 0;
|
*RequiredSize = 0;
|
||||||
|
|
||||||
|
@ -382,7 +386,7 @@ BOOL WINAPI SetupDiClassGuidsFromNameExW(
|
||||||
TRACE("RegEnumKeyExW() returns %ld\n", lError);
|
TRACE("RegEnumKeyExW() returns %ld\n", lError);
|
||||||
if (lError == ERROR_SUCCESS || lError == ERROR_MORE_DATA)
|
if (lError == ERROR_SUCCESS || lError == ERROR_MORE_DATA)
|
||||||
{
|
{
|
||||||
TRACE("Key name: %p\n", szKeyName);
|
TRACE("Key name: %s\n", debugstr_w(szKeyName));
|
||||||
|
|
||||||
if (RegOpenKeyExW(hClassesKey,
|
if (RegOpenKeyExW(hClassesKey,
|
||||||
szKeyName,
|
szKeyName,
|
||||||
|
@ -402,20 +406,20 @@ BOOL WINAPI SetupDiClassGuidsFromNameExW(
|
||||||
(LPBYTE)szClassName,
|
(LPBYTE)szClassName,
|
||||||
&dwLength))
|
&dwLength))
|
||||||
{
|
{
|
||||||
TRACE("Class name: %p\n", szClassName);
|
TRACE("Class name: %s\n", debugstr_w(szClassName));
|
||||||
|
|
||||||
if (strcmpiW(szClassName, ClassName) == 0)
|
if (strcmpiW(szClassName, ClassName) == 0)
|
||||||
{
|
{
|
||||||
TRACE("Found matching class name\n");
|
TRACE("Found matching class name\n");
|
||||||
|
|
||||||
TRACE("Guid: %p\n", szKeyName);
|
TRACE("Guid: %s\n", debugstr_w(szKeyName));
|
||||||
if (dwGuidListIndex < ClassGuidListSize)
|
if (dwGuidListIndex < ClassGuidListSize)
|
||||||
{
|
{
|
||||||
if (szKeyName[0] == L'{' && szKeyName[37] == L'}')
|
if (szKeyName[0] == L'{' && szKeyName[37] == L'}')
|
||||||
{
|
{
|
||||||
szKeyName[37] = 0;
|
szKeyName[37] = 0;
|
||||||
}
|
}
|
||||||
TRACE("Guid: %p\n", &szKeyName[1]);
|
TRACE("Guid: %s\n", debugstr_w(&szKeyName[1]));
|
||||||
|
|
||||||
UuidFromStringW(&szKeyName[1],
|
UuidFromStringW(&szKeyName[1],
|
||||||
&ClassGuidList[dwGuidListIndex]);
|
&ClassGuidList[dwGuidListIndex]);
|
||||||
|
@ -520,6 +524,9 @@ BOOL WINAPI SetupDiClassNameFromGuidExW(
|
||||||
DWORD dwLength;
|
DWORD dwLength;
|
||||||
LONG rc;
|
LONG rc;
|
||||||
|
|
||||||
|
TRACE("%s %p %lu %p %s %p\n", debugstr_guid(ClassGuid), ClassName,
|
||||||
|
ClassNameSize, RequiredSize, debugstr_w(MachineName), Reserved);
|
||||||
|
|
||||||
hKey = SetupDiOpenClassRegKeyExW(ClassGuid,
|
hKey = SetupDiOpenClassRegKeyExW(ClassGuid,
|
||||||
KEY_QUERY_VALUE,
|
KEY_QUERY_VALUE,
|
||||||
DIOCR_INSTALLER,
|
DIOCR_INSTALLER,
|
||||||
|
@ -590,7 +597,8 @@ SetupDiCreateDeviceInfoListExA(const GUID *ClassGuid,
|
||||||
LPWSTR MachineNameW = NULL;
|
LPWSTR MachineNameW = NULL;
|
||||||
HDEVINFO hDevInfo;
|
HDEVINFO hDevInfo;
|
||||||
|
|
||||||
TRACE("%p %p %s %p\n", ClassGuid, hwndParent, MachineName, Reserved);
|
TRACE("%s %p %s %p\n", debugstr_guid(ClassGuid), hwndParent,
|
||||||
|
debugstr_a(MachineName), Reserved);
|
||||||
|
|
||||||
if (MachineName)
|
if (MachineName)
|
||||||
{
|
{
|
||||||
|
@ -623,7 +631,8 @@ SetupDiCreateDeviceInfoListExW(const GUID *ClassGuid,
|
||||||
//CONFIGRET cr;
|
//CONFIGRET cr;
|
||||||
HDEVINFO ret = (HDEVINFO)INVALID_HANDLE_VALUE;;
|
HDEVINFO ret = (HDEVINFO)INVALID_HANDLE_VALUE;;
|
||||||
|
|
||||||
TRACE("%p %p %S %p\n", ClassGuid, hwndParent, MachineName, Reserved);
|
TRACE("%s %p %s %p\n", debugstr_guid(ClassGuid), hwndParent,
|
||||||
|
debugstr_w(MachineName), Reserved);
|
||||||
|
|
||||||
list = HeapAlloc(GetProcessHeap(), 0, sizeof(struct DeviceInfoSet));
|
list = HeapAlloc(GetProcessHeap(), 0, sizeof(struct DeviceInfoSet));
|
||||||
if (!list)
|
if (!list)
|
||||||
|
@ -817,6 +826,9 @@ BOOL WINAPI SetupDiGetActualSectionToInstallW(
|
||||||
DWORD dwFullLength;
|
DWORD dwFullLength;
|
||||||
LONG lLineCount = -1;
|
LONG lLineCount = -1;
|
||||||
|
|
||||||
|
TRACE("%p %s %p %lu %p %p\n", InfHandle, debugstr_w(InfSectionName),
|
||||||
|
InfSectionWithExt, InfSectionWithExtSize, RequiredSize, Extension);
|
||||||
|
|
||||||
lstrcpyW(szBuffer, InfSectionName);
|
lstrcpyW(szBuffer, InfSectionName);
|
||||||
dwLength = lstrlenW(szBuffer);
|
dwLength = lstrlenW(szBuffer);
|
||||||
|
|
||||||
|
@ -977,8 +989,11 @@ BOOL WINAPI SetupDiGetClassDescriptionExW(
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
DWORD dwLength;
|
DWORD dwLength;
|
||||||
|
|
||||||
|
TRACE("%s %p %lu %p %s %p\n", debugstr_guid(ClassGuid), ClassDescription,
|
||||||
|
ClassDescriptionSize, RequiredSize, debugstr_w(MachineName), Reserved);
|
||||||
|
|
||||||
hKey = SetupDiOpenClassRegKeyExW(ClassGuid,
|
hKey = SetupDiOpenClassRegKeyExW(ClassGuid,
|
||||||
KEY_ALL_ACCESS,
|
KEY_QUERY_VALUE,
|
||||||
DIOCR_INSTALLER,
|
DIOCR_INSTALLER,
|
||||||
MachineName,
|
MachineName,
|
||||||
Reserved);
|
Reserved);
|
||||||
|
@ -1967,7 +1982,7 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(
|
||||||
DWORD sizeW = 0, sizeA;
|
DWORD sizeW = 0, sizeA;
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
TRACE("(%p, %p, %p, %ld, %p, %p)\n", DeviceInfoSet,
|
TRACE("%p %p %p %lu %p %p\n", DeviceInfoSet,
|
||||||
DeviceInterfaceData, DeviceInterfaceDetailData,
|
DeviceInterfaceData, DeviceInterfaceDetailData,
|
||||||
DeviceInterfaceDetailDataSize, RequiredSize, DeviceInfoData);
|
DeviceInterfaceDetailDataSize, RequiredSize, DeviceInfoData);
|
||||||
|
|
||||||
|
@ -2036,7 +2051,7 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(
|
||||||
struct DeviceInfoSet *list;
|
struct DeviceInfoSet *list;
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
TRACE("(%p, %p, %p, %ld, %p, %p): stub\n", DeviceInfoSet,
|
TRACE("%p %p %p %lu %p %p\n", DeviceInfoSet,
|
||||||
DeviceInterfaceData, DeviceInterfaceDetailData,
|
DeviceInterfaceData, DeviceInterfaceDetailData,
|
||||||
DeviceInterfaceDetailDataSize, RequiredSize, DeviceInfoData);
|
DeviceInterfaceDetailDataSize, RequiredSize, DeviceInfoData);
|
||||||
|
|
||||||
|
@ -2579,7 +2594,7 @@ static HKEY CreateClassKey(HINF hInf)
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
REG_OPTION_NON_VOLATILE,
|
REG_OPTION_NON_VOLATILE,
|
||||||
KEY_ALL_ACCESS,
|
KEY_SET_VALUE,
|
||||||
NULL,
|
NULL,
|
||||||
&hClassKey,
|
&hClassKey,
|
||||||
NULL))
|
NULL))
|
||||||
|
@ -2618,6 +2633,9 @@ BOOL WINAPI SetupDiInstallClassW(
|
||||||
BOOL bFileQueueCreated = FALSE;
|
BOOL bFileQueueCreated = FALSE;
|
||||||
HKEY hClassKey;
|
HKEY hClassKey;
|
||||||
|
|
||||||
|
TRACE("%p %s 0x%lx %p\n", hwndParent, debugstr_w(InfFileName),
|
||||||
|
Flags, FileQueue);
|
||||||
|
|
||||||
FIXME("not fully implemented\n");
|
FIXME("not fully implemented\n");
|
||||||
|
|
||||||
if ((Flags & DI_NOVCP) && (FileQueue == NULL || FileQueue == INVALID_HANDLE_VALUE))
|
if ((Flags & DI_NOVCP) && (FileQueue == NULL || FileQueue == INVALID_HANDLE_VALUE))
|
||||||
|
@ -2763,6 +2781,9 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
|
||||||
DWORD rc;
|
DWORD rc;
|
||||||
LPCWSTR lpKeyName;
|
LPCWSTR lpKeyName;
|
||||||
|
|
||||||
|
TRACE("%s 0x%lx 0x%lx %s %p\n", debugstr_guid(ClassGuid), samDesired,
|
||||||
|
Flags, debugstr_w(MachineName), Reserved);
|
||||||
|
|
||||||
if (Flags == DIOCR_INSTALLER)
|
if (Flags == DIOCR_INSTALLER)
|
||||||
{
|
{
|
||||||
lpKeyName = ControlClass;
|
lpKeyName = ControlClass;
|
||||||
|
@ -2793,7 +2814,7 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
|
||||||
rc = RegOpenKeyExW(HKLM,
|
rc = RegOpenKeyExW(HKLM,
|
||||||
lpKeyName,
|
lpKeyName,
|
||||||
0,
|
0,
|
||||||
KEY_ALL_ACCESS,
|
ClassGuid ? KEY_ENUMERATE_SUB_KEYS : samDesired,
|
||||||
&hClassesKey);
|
&hClassesKey);
|
||||||
if (MachineName != NULL) RegCloseKey(HKLM);
|
if (MachineName != NULL) RegCloseKey(HKLM);
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
|
@ -2829,7 +2850,7 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
|
||||||
rc = RegOpenKeyExW(hClassesKey,
|
rc = RegOpenKeyExW(hClassesKey,
|
||||||
lpFullGuidString,
|
lpFullGuidString,
|
||||||
0,
|
0,
|
||||||
KEY_ALL_ACCESS,
|
samDesired,
|
||||||
&hClassKey);
|
&hClassKey);
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue