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?
-
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