Zu RegDeleteTree, bzw. RegDeleteTreeW und RegDeleteTreeA kann man recht einfach eine eigene Routine schreiben!Alternativ kann man auch SHDeleteKeyA bzw SHDeleteKeyW verwenden! Der bereitgestellte C++-Code ist eine Funktion aus, die dazu dient, einen Registrierungsschlüssel (Registry Key) und alle seine untergeordneten Schlüssel rekursiv zu löschen. Hier ist eine kurze Beschreibung des Codes mit Kommentaren in Deutsch:
BOOL RecurseDeleteKey(HKEY hKey, LPCTSTR lpszKey) { try { DWORD dw; HKEY hNewKey; LONG lRes; // Versuchen, einen neuen Registrierungsschlüssel unter dem übergebenen Hauptschlüssel zu erstellen. // Dabei wird der Hauptschlüssel 'hKey' und der Schlüsselname 'lpszKey' verwendet. if (RegCreateKeyEx(hKey, (LPCTSTR)lpszKey, 0, REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_READ, NULL, &hNewKey, &dw) == ERROR_SUCCESS) { TCHAR szBuffer[256]; DWORD dwSize = 256; FILETIME time; // Schleife zum Durchlaufen aller untergeordneten Schlüssel des neu erstellten Schlüssels. while (RegEnumKeyEx(hNewKey, 0, szBuffer, &dwSize, NULL, NULL, NULL, &time) == ERROR_SUCCESS) { // Rekursiver Aufruf der Funktion, um den untergeordneten Schlüssel zu löschen. lRes = RecurseDeleteKey(hNewKey, szBuffer); if (lRes != ERROR_SUCCESS) return lRes; dwSize = 256; } } // Löschen des Hauptschlüssels und aller seiner untergeordneten Schlüssel. return RegDeleteKey(hKey, lpszKey); } catch (...) { return FALSE; } } Dieser Code verwendet die Windows-Registrierungsfunktionen, um Registrierungsschlüssel und deren untergeordnete Schlüssel zu löschen. Die Funktion RecurseDeleteKey wird rekursiv aufgerufen, um alle untergeordneten Schlüssel zu löschen, bevor der Hauptschlüssel gelöscht wird. Beachten Sie, dass der Code in einem try-catch-Block eingeschlossen ist, um mögliche Ausnahmen abzufangen und FALSE zurückzugeben, falls eine Ausnahme auftritt. FAQ 22: Aktualisiert am: 1 November 2023 12:26 |