HKEY hKEY;
HKEY hkey;
DWORD numSubKey=0; //存放子键的项数
DWORD sizeSubKey=255; //子键大小
TCHAR subKey[255]; //子键名
char sz[80]; DWORD dwtype, sl;
ZeroMemory(sz,sizeof(sz)); //清空内存,初始化
ZeroMemory(subKey,sizeof(subKey));
CString str;
long ret0=(::RegOpenKeyEx(HKEY_CLASSES_ROOT, "", 0, KEY_READ,&hKEY)); //打开主键,获得子项数量
if(ret0!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行
{
MessageBox("错误: 无法打开有关的hKEY!");
return;
}
RegQueryInfoKey(hKEY,NULL,NULL,NULL,&numSubKey,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
if (numSubKey) /*如果子键数不为0,遍历子键*/
{
for (DWORD i=0; i<numSubKey; i++)
{
subKey[0]='/0'; sizeSubKey=255;
RegEnumKeyEx(hKEY,i,subKey,&sizeSubKey,NULL,NULL,NULL,NULL); //获得子项名称
ret0=(::RegOpenKeyEx(HKEY_CLASSES_ROOT,subKey, 0, KEY_READ,&hkey)); //打开子键
if(ret0!=ERROR_SUCCESS)
{
return;
}
dwtype=REG_SZ, sl = 80;
long ret1=RegQueryValueEx(hkey,NULL,NULL, &dwtype,(LPBYTE)sz, &sl); //取值
str=sz;
if(str!="") //如果取得的值不是空,则添加到搜索列表
{
str=str+"(*"+subKey+")";
m_SearchType.InsertString(-1,str); //插入到下拉列表
}
}
}
RegCloseKey(hkey);
RegCloseKey(hKEY);
HKEY hkey;
DWORD numSubKey=0; //存放子键的项数
DWORD sizeSubKey=255; //子键大小
TCHAR subKey[255]; //子键名
char sz[80]; DWORD dwtype, sl;
ZeroMemory(sz,sizeof(sz)); //清空内存,初始化
ZeroMemory(subKey,sizeof(subKey));
CString str;
long ret0=(::RegOpenKeyEx(HKEY_CLASSES_ROOT, "", 0, KEY_READ,&hKEY)); //打开主键,获得子项数量
if(ret0!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行
{
MessageBox("错误: 无法打开有关的hKEY!");
return;
}
RegQueryInfoKey(hKEY,NULL,NULL,NULL,&numSubKey,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
if (numSubKey) /*如果子键数不为0,遍历子键*/
{
for (DWORD i=0; i<numSubKey; i++)
{
subKey[0]='/0'; sizeSubKey=255;
RegEnumKeyEx(hKEY,i,subKey,&sizeSubKey,NULL,NULL,NULL,NULL); //获得子项名称
ret0=(::RegOpenKeyEx(HKEY_CLASSES_ROOT,subKey, 0, KEY_READ,&hkey)); //打开子键
if(ret0!=ERROR_SUCCESS)
{
return;
}
dwtype=REG_SZ, sl = 80;
long ret1=RegQueryValueEx(hkey,NULL,NULL, &dwtype,(LPBYTE)sz, &sl); //取值
str=sz;
if(str!="") //如果取得的值不是空,则添加到搜索列表
{
str=str+"(*"+subKey+")";
m_SearchType.InsertString(-1,str); //插入到下拉列表
}
}
}
RegCloseKey(hkey);
RegCloseKey(hKEY);