我用注册表枚举函数RegEnumValue枚举HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run子键下的键值项,得到的结果和用RegEdit查询的结果完全不同,这是怎么回事,枚举代码如下:
[code=c]
#define REG_RUN L"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
DWORD dwType = 0;
DWORD dwBufferSzie = MAXBYTE;
DWORD dwKeySize = MAXBYTE;
TCHAR szwValueName[MAXBYTE] = { 0 };
TCHAR szwValueKey[MAXBYTE] = { 0 };
HKEY hKey = NULL;
LONG lRet = RegOpenKey(HKEY_LOCAL_MACHINE, REG_RUN, &hKey);
if (lRet!=ERROR_SUCCESS)
{
return;
}
int i = 0;
CString strTmp;
while (TRUE)
{
dwKeySize= dwBufferSzie = sizeof(szwValueName) / sizeof(TCHAR);
lRet = RegEnumValue(hKey,
i,
szwValueName,
&dwBufferSzie,
NULL,
&dwType,
(LPBYTE)szwValueKey,
&dwKeySize);
if (lRet == ERROR_NO_MORE_ITEMS)
{
break;
}
strTmp.Format(L"%d", i);
m_RunList.InsertItem(i, strTmp);
m_RunList.SetItemText(i, 1, szwValueName);
m_RunList.SetItemText(i, 2, szwValueKey);
i++;
ZeroMemory(szwValueName, MAXBYTE);
ZeroMemory(szwValueKey, MAXBYTE);
}
[/code]
上面只是部分代码,代码我运行没有问题,但结果如下小图:
而用RegEdit查询的结果如下大图:
结果怎么会完全不同啊,请高手指点下