分类: C/C++
2008-10-26 21:46:12
/***
*DeleteSubKeyTree(HKEY hKey, LPCTSTR lpSubKey)
* 功能: 递归删除注册表子键
* 入口:
* hKey : 一个HEKY类型的参数,比如HKEY_CLASSES_ROOT
* lpSubKey: 比如".exe"
* 出口: 成功删除,返回ERROR_SUCCESS,失败则返回一个非0值。
*
* 实例: LPCTSTR lpSubKey= "shile";
HKEY hKey = HKEY_CLASSES_ROOT;
long ret;
ret = DeleteSubKeyTree(hKey, lpSubKey);
if (ret == ERROR_SUCCESS)
{
SetDlgItemText(IDC_STATIC, "删除子键HKEY_CLASSES_ROOT\\shile成功");
}
*
**************************************************/
LONG DeleteSubKeyTree(HKEY hKey, LPCTSTR lpSubKey)
{
LONG lResult;
HKEY hSubKey;
DWORD dwIndex, cbName;
char szSubKey[512];
FILETIME ft;
lResult = RegOpenKeyEx(hKey, lpSubKey, 0, KEY_ALL_ACCESS,&hSubKey);
if (lResult != ERROR_SUCCESS)
{
RegCloseKey(hSubKey);
return lResult;
}
dwIndex = 0;
cbName = sizeof(szSubKey)/sizeof(szSubKey[0]);
while (ERROR_SUCCESS == (lResult = RegEnumKeyEx(hSubKey, dwIndex, szSubKey, &cbName, NULL, NULL, NULL, &ft)))
{
DeleteSubKeyTree(hSubKey, szSubKey);
}
RegCloseKey(hSubKey);
lResult = RegDeleteKey(hKey, lpSubKey);
return lResult;
}