奇怪的问题,边枚举注册表值边删除会随机中断?你不觉得奇怪吗?各位大Xia,有何良策?
mint 2002-03-21 11:03:09 奇怪的问题,边枚举注册表值边删除会随机中断?你不觉得奇怪吗?
代码如下:
//hkey是当前的注册表根
int i;
CString lpDelReg;
HKEY HKey;
BOOL bResult = TRUE;
DWORD lResult;
//打开注册表
lResult = ::RegOpenKeyEx(hkey,
RegPath,
0,
KEY_QUERY_VALUE|KEY_SET_VALUE, &HKey);
if (lResult != ERROR_SUCCESS)
{
return ;//不成功就退出
}
//反复读取所有的项
for (i = 0; ; i++)
{
TCHAR szValueName[_MAX_PATH + 1];
DWORD dwValueName = sizeof(szValueName);
DWORD dwValueType;
TCHAR szDataName[_MAX_PATH + 1];
DWORD dwDataName = sizeof(szDataName);
lResult =::RegEnumValue(HKey,
i,
szValueName,
&dwValueName,
NULL,
&dwValueType,
(PBYTE)&szDataName,
&dwDataName);
if (lResult == ERROR_SUCCESS)
{
if (lResult == ERROR_NO_MORE_ITEMS)
{
break;
}
//结果放在szDataName中:值
//放在szValueName中的是:值名
//单独枚举没有问题!!!!!!!!!!!
//好象是遇到有空格的串,如:“Machine Debug Manager"就不行了!
RegDeleteValue(
HKey, // handle to key
szValueName // value name
);
}
else
{
//记录下所有项目数
break;
}
};
RegCloseKey(HKey);
各位大Xia,有何良策?