C++读取注册表遇到的奇怪问题,求助
小弟最近在写一个读取注册表的程序,在写如下代码时出现了问题:
SetRegeditPath()
{
// Set the key path
char *szSubkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
ReadRegedit(szSubkey);
}
void CSoftwareFinderDlg::ReadRegedit(char* szSubKey)
{
std::list<SoftwareInfo> nameList;
lRetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szSubKey, 0, KEY_READ, &hKey);
if(ERROR_SUCCESS == lRetVal)
{
lRetVal = RegEnumKeyEx(hKey, nIndex, szName, &nNameLen, 0, NULL, NULL, 0);
while(lRetVal != ERROR_NO_MORE_ITEMS)
{
nIndex++;
if(_tcscmp(szName, _T("")) == 0) continue;
CString strs=szName;
strs=strs.Trim();
SoftwareInfo soft; //将键名保存到list中
soft.name=strs;
nameList.push_back(soft);
}
}
FileSave(nameList); //将信息保存到文件中
}
while(lRetVal != ERROR_NO_MORE_ITEMS)
//不懂Windows注册表,但是这里如果进来了while循环 哪里退出呢?
{
nIndex++;
if(_tcscmp(szName, _T("")) == 0)
continue;
CString strs=szName;
strs=strs.Trim();
SoftwareInfo soft; //将键名保存到list中
soft.name=strs;
nameList.push_back(soft);
}