В примере в этом разделе используются функции RegOpenKeyEx, RegEnumKeyEx и RegDeleteKey для удаления раздела реестра с подразделами.
Чтобы протестировать этот пример, создайте следующий раздел реестра с помощью Regedt32.exe, а затем добавьте несколько значений и подразделов:
HKEY_CURRENT_USERПрограммного обеспеченияTestDir
После выполнения кода обновите данные реестра с помощью клавиши F5 и обратите внимание, что раздел TestDir удален.
#include #include #include //************************************************************* // // RegDelnodeRecurse() // // Purpose: Deletes a registry key and all its subkeys / values. // // Parameters: hKeyRoot — Root key // lpSubKey — SubKey to delete // // Return: TRUE if successful. // FALSE if an error occurs. // //************************************************************* BOOL RegDelnodeRecurse (HKEY hKeyRoot, LPTSTR lpSubKey) < LPTSTR lpEnd; LONG lResult; DWORD dwSize; TCHAR szName[MAX_PATH]; HKEY hKey; FILETIME ftWrite; // First, see if we can delete the key without having // to recurse. lResult = RegDeleteKey(hKeyRoot, lpSubKey); if (lResult == ERROR_SUCCESS) return TRUE; lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, if (lResult != ERROR_SUCCESS) < if (lResult == ERROR_FILE_NOT_FOUND) < printf(«Key not found.n»); return TRUE; >else < printf(«Error opening key.n»); return FALSE; >> // Check for an ending slash and add one if it is missing. lpEnd = lpSubKey + lstrlen(lpSubKey); if (*(lpEnd — 1) != TEXT(‘\’)) < *lpEnd = TEXT(‘\’); lpEnd++; *lpEnd = TEXT(‘