16,472
社区成员
发帖
与我相关
我的任务
分享
//删除注册表项
DWORD DeleteTree(HKEY RootKey, LPCTSTR pSubKey)
{
HKEY hKey;
DWORD nRet;
DWORD NameCnt,NameMaxLen;
DWORD KeyCnt,KeyMaxLen,MaxDateLen;
static TCHAR sFormat[256] = {0};
_tcscat_s(sFormat, _T("----"));
static int dwDeep = 1;
dwDeep++;
nRet=RegOpenKeyEx(RootKey,pSubKey,0,KEY_ALL_ACCESS,&hKey);
if(nRet!=ERROR_SUCCESS)
{
return 0;
}
nRet = RegQueryInfoKey(hKey,NULL,NULL,NULL,&KeyCnt,&KeyMaxLen,NULL,&NameCnt,
&NameMaxLen,&MaxDateLen,NULL,NULL);
if(nRet == ERROR_SUCCESS)
{
for(int dwIndex = KeyCnt - 1; dwIndex >= 0; dwIndex--) //枚举键值
{
TCHAR sKeyName[256] = {0};
RegEnumKey(hKey, dwIndex, sKeyName, sizeof(sKeyName));
HKEY hKeySub;
DWORD KeyCntSub;
TCHAR pSubKeyTemp[256] = {};
_tcscpy_s(pSubKeyTemp, pSubKey);
_tcscat_s(pSubKeyTemp, _T("\\"));
_tcscat_s(pSubKeyTemp, sKeyName);
nRet = RegOpenKeyEx(RootKey,pSubKeyTemp,0,KEY_ALL_ACCESS,&hKeySub);
if(nRet == ERROR_SUCCESS)
{
nRet = RegQueryInfoKey(hKeySub,NULL,NULL,NULL,&KeyCntSub,&KeyMaxLen,NULL,&NameCnt,
&NameMaxLen,&MaxDateLen,NULL,NULL);
if(nRet == ERROR_SUCCESS)
{
if (KeyCntSub != 0)
{
DeleteTree(RootKey, pSubKeyTemp);
}
RegCloseKey(hKeySub);
}
}
RegDeleteKey(RootKey ,pSubKeyTemp);
}
dwDeep--;
if (dwDeep == 1)
{
RegDeleteKey(RootKey ,pSubKey);
}
RegCloseKey(hKey);
}
return 0;
}