RegCreateKeyEx(HKEY_LOCAL_MACHINE,.. ) und AppVerifier



  • Ich möchte Einstellungen in die Registry speichern s.d. diese in HKEY_CURRENT_USER und wenn möglich in HKEY_LOCAL_MACHINE gespeichert werden, s.d. ein normaler Benutzer die Information in HKEY_CURRENT_USER und ein Admin die Information in HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE speichert.

    BOOL WriteData(const char* KeyName, const char* Data)
    {
    	LONG Result;
    	HKEY hKey;
        BOOL Success = FALSE;
    
        // Versuche in HKEY_CURRENT_USER zu schreiben 
        Result = RegCreateKeyEx(HKEY_CURRENT_USER, "ABC...", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, hKey, NULL);
    	if (Result == ERROR_SUCCESS)
        {
            // Schreibe Daten rein
            Success = TRUE;
            RegCloseKey(hKey);
        }
        // Versuche in HKEY_LOCAL_MACHINE zu schreiben 
        Result = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "ABC...", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, hKey, NULL);
    	if (Result == ERROR_SUCCESS)
        {
            // Schreibe Daten rein
            Success = TRUE;
            RegCloseKey(hKey);
        }
        // Wenn wir kein Zugriff auf HKEY_LOCAL_MACHINE hatten, macht dies nichts. 
        return Success;
    }
    

    Der Code funktioniert perfekt. Aber der AppVerifier motzt hier rum ("Access was restricted to trusted users only."), weil ich hier versuche auf HK_LM zuzugreifen.

    Ist das in meinem Fall ein Fehler?

    Gibt es eine alternative Möglichkeit festzustellen ob ich schreibenden Zugriff auf HKEY_LOCAL_MACHINE habe?



  • Warum bei nem Admin nicht auch einfach nur in HKEY_CURRENT_USER schreiben?


  • Mod

    Verwende AccessCheck und prüfe erst ob Du Zugriff hast.

    Grundsätzlich hast Du bei eingeschaltetem UAC niemals das Recht HKLM zu verändern außer Dein Programm läuft als Admin.
    Also kannst Du auch einfach das prüfen...



  • Warum bei nem Admin nicht auch einfach nur in HKEY_CURRENT_USER schreiben?

    Damit der normale Benutzer, sofern er seinen eigenen Einstellung nicht hat, die Einstellungen des Admin's lesen kann. 🙂

    @Martin Richter
    Danke 🙂


Anmelden zum Antworten