mirror of
https://github.com/reactos/reactos.git
synced 2024-08-08 04:08:29 +00:00
[SHELL32] - Support keys with readable name and default value set to GUID in MyComputer name space. Fixes a warning about "Controls" not beeing GUID.
svn path=/trunk/; revision=54408
This commit is contained in:
parent
44cac5c127
commit
34a7965726
|
@ -93,7 +93,7 @@ static const WCHAR MyComputer_NameSpaceW[] = { 'S','O','F','T','W','A','R','E',
|
||||||
|
|
||||||
BOOL CDrivesFolderEnum::CreateMyCompEnumList(DWORD dwFlags)
|
BOOL CDrivesFolderEnum::CreateMyCompEnumList(DWORD dwFlags)
|
||||||
{
|
{
|
||||||
BOOL ret = TRUE;
|
BOOL bRet = TRUE;
|
||||||
|
|
||||||
TRACE("(%p)->(flags=0x%08x)\n", this, dwFlags);
|
TRACE("(%p)->(flags=0x%08x)\n", this, dwFlags);
|
||||||
|
|
||||||
|
@ -102,52 +102,57 @@ BOOL CDrivesFolderEnum::CreateMyCompEnumList(DWORD dwFlags)
|
||||||
{
|
{
|
||||||
WCHAR wszDriveName[] = {'A', ':', '\\', '\0'};
|
WCHAR wszDriveName[] = {'A', ':', '\\', '\0'};
|
||||||
DWORD dwDrivemap = GetLogicalDrives();
|
DWORD dwDrivemap = GetLogicalDrives();
|
||||||
HKEY hkey;
|
HKEY hKey;
|
||||||
UINT i;
|
UINT i;
|
||||||
|
|
||||||
while (ret && wszDriveName[0]<='Z')
|
while (bRet && wszDriveName[0]<='Z')
|
||||||
{
|
{
|
||||||
if(dwDrivemap & 0x00000001L)
|
if(dwDrivemap & 0x00000001L)
|
||||||
ret = AddToEnumList(_ILCreateDrive(wszDriveName));
|
bRet = AddToEnumList(_ILCreateDrive(wszDriveName));
|
||||||
wszDriveName[0]++;
|
wszDriveName[0]++;
|
||||||
dwDrivemap = dwDrivemap >> 1;
|
dwDrivemap = dwDrivemap >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("-- (%p)-> enumerate (mycomputer shell extensions)\n", this);
|
TRACE("-- (%p)-> enumerate (mycomputer shell extensions)\n", this);
|
||||||
for (i=0; i<2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
if (ret && !RegOpenKeyExW(i == 0 ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
|
if (bRet && ERROR_SUCCESS == RegOpenKeyExW(i == 0 ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
|
||||||
MyComputer_NameSpaceW, 0, KEY_READ, &hkey))
|
MyComputer_NameSpaceW, 0, KEY_READ, &hKey))
|
||||||
{
|
{
|
||||||
WCHAR iid[50];
|
WCHAR wszBuf[50];
|
||||||
int i=0;
|
DWORD dwSize, j = 0;
|
||||||
|
LONG ErrorCode;
|
||||||
|
LPITEMIDLIST pidl;
|
||||||
|
|
||||||
while (ret)
|
while (bRet)
|
||||||
{
|
{
|
||||||
DWORD size;
|
dwSize = sizeof(wszBuf) / sizeof(wszBuf[0]);
|
||||||
LONG r;
|
ErrorCode = RegEnumKeyExW(hKey, j, wszBuf, &dwSize, 0, NULL, NULL, NULL);
|
||||||
|
if (ERROR_SUCCESS == ErrorCode)
|
||||||
size = sizeof(iid) / sizeof(iid[0]);
|
|
||||||
r = RegEnumKeyExW(hkey, i, iid, &size, 0, NULL, NULL, NULL);
|
|
||||||
if (ERROR_SUCCESS == r)
|
|
||||||
{
|
{
|
||||||
|
if (wszBuf[0] != L'{')
|
||||||
|
{
|
||||||
|
dwSize = sizeof(wszBuf);
|
||||||
|
RegGetValueW(hKey, wszBuf, NULL, RRF_RT_REG_SZ, NULL, wszBuf, &dwSize);
|
||||||
|
}
|
||||||
|
|
||||||
/* FIXME: shell extensions, shouldn't the type be
|
/* FIXME: shell extensions, shouldn't the type be
|
||||||
* PT_SHELLEXT? */
|
* PT_SHELLEXT? */
|
||||||
LPITEMIDLIST pidl = _ILCreateGuidFromStrW(iid);
|
pidl = _ILCreateGuidFromStrW(wszBuf);
|
||||||
if (pidl != NULL)
|
if (pidl != NULL)
|
||||||
ret = AddToEnumList(pidl);
|
bRet = AddToEnumList(pidl);
|
||||||
i++;
|
j++;
|
||||||
}
|
}
|
||||||
else if (ERROR_NO_MORE_ITEMS == r)
|
else if (ERROR_NO_MORE_ITEMS == ErrorCode)
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
ret = FALSE;
|
bRet = FALSE;
|
||||||
}
|
}
|
||||||
RegCloseKey(hkey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return bRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDrivesFolder::CDrivesFolder()
|
CDrivesFolder::CDrivesFolder()
|
||||||
|
|
Loading…
Reference in a new issue