Haupt Key in der Registry löschen?



  • Hallo Leute ich möchte ein Hauptkey löschen dieser hat mehrere Subkeys doch mit der Funktion RegDeleteKey() klappts nicht, da muss man jedes Key einzelnd löschen.



  • Solange du nicht Vista benützt wirst du wohl jeden SubKey einzeln löschen müssen.
    Schreib dir am besten ne kleine Funktion. Sollte ja wirklich nicht das Problem sein.
    Siehe dazu: MSDN


  • Mod

    Wen Du ATL CRegKey verwendest geht das sehr einfach.

    Ansonten kannst Du Dir den Code von dort klauen

    inline LONG CRegKey::RecurseDeleteKey(LPCTSTR lpszKey) throw()
    {
    	CRegKey key;
    	LONG lRes = key.Open(m_hKey, lpszKey, KEY_READ | KEY_WRITE);
    	if (lRes != ERROR_SUCCESS)
    	{
    		if (lRes != ERROR_FILE_NOT_FOUND && lRes != ERROR_PATH_NOT_FOUND)
    		{
    			ATLTRACE(atlTraceCOM, 0, _T("CRegKey::RecurseDeleteKey : Failed to Open Key %s(Error = %d)\n"), lpszKey, lRes);
    		}
    		return lRes;
    	}
    	FILETIME time;
    	DWORD dwSize = 256;
    	TCHAR szBuffer[256];
    	while (RegEnumKeyEx(key.m_hKey, 0, szBuffer, &dwSize, NULL, NULL, NULL,
    		&time)==ERROR_SUCCESS)
    	{
    		lRes = key.RecurseDeleteKey(szBuffer);
    		if (lRes != ERROR_SUCCESS)
    			return lRes;
    		dwSize = 256;
    	}
    	key.Close();
    	return DeleteSubKey(lpszKey);
    }
    

Anmelden zum Antworten