LONG AFXAPI AfxDelRegTreeHelper(HKEY hParentKey, const CString& strKeyName) { TCHAR szSubKeyName[256]; HKEY hCurrentKey; DWORD dwResult; if ((dwResult = RegOpenKey(hParentKey, strKeyName, &hCurrentKey)) == ERROR_SUCCESS) { // Remove all subkeys of the key to delete while ((dwResult = RegEnumKey(hCurrentKey, 0, szSubKeyName, 255)) == ERROR_SUCCESS) { if ((dwResult = AfxDelRegTreeHelper(hCurrentKey, szSubKeyName)) != ERROR_SUCCESS) break; } // If all went well, we should now be able to delete the requested key if ((dwResult == ERROR_NO_MORE_ITEMS) || (dwResult == ERROR_BADKEY)) { dwResult = RegDeleteKey(hParentKey, strKeyName); } } RegCloseKey(hCurrentKey); return dwResult; }
LONG AFXAPI _AfxRecursiveRegDeleteKey(HKEY hParentKey, LPTSTR szKeyName) { // one implementation for everybody return AfxDelRegTreeHelper(hParentKey, szKeyName); }
LONG CWinApp::DelRegTree(HKEY hParentKey, const CString& strKeyName) { return AfxDelRegTreeHelper(hParentKey, strKeyName); }