Registry Value in Schlüssel erstellen
-
Hallo,
ich programmiere zum ersten Mal mit Zugriff auf die Registry von Windows.
Dazu nutze ich ein Pointer auf ein TRegistry-Objekt.Ich kann ggf. Schlüssel ohne Probleme auch anlegen. Das Problem, welches ich habe ist, dass ich ggf. (sollte ein Value fehlen) ein Value nicht im Schlüssel neu anlegen kann. Wie geht das? Bei mir gibt es nur eine exception. Hier eine Quellcodeauszug.
void CheckRegistryEntry(TRegistry *pReg) { // Deklaration, Definition der Funktionsvariablen // TRegistry *pReg = new TRegistry; // Poniter der Instanz von TRegistry try { pReg->RootKey = HKEY_CURRENT_USER; // Festlegen des Rootschlüssels // Prüfuen ob Schlüssel in Registry vorhanden ist if (pReg->KeyExists(REG_MAINKEY)) { // Prüfung ob Werte im Schlüssel Vorhanden sind pReg->OpenKeyReadOnly(REG_MAINKEY); if (!pReg->ValueExists(REG_VALUELANG)) { // Englisch wird als Standart eingetragen pReg->WriteString(REG_VALUELANG, "eng"); } if (!pReg->ValueExists(REG_VALUEDPATH)) { // Zielpfad wird leer gelassen pReg->WriteString(REG_VALUEDPATH, ""); } if (!pReg->ValueExists(REG_VALUEBPATH)) { // BackupPfad bleibt leer pReg->WriteString(REG_VALUEBPATH, ""); } } else { // Sollte nichteinmal ein Schlüssel SAACKE existieren, // müssen alle Schlüssel angelegt werden. // Erstellen des Schlüssels pReg->CreateKey(REG_MAINKEY); // Öffnen des Schlüssels pReg->OpenKeyReadOnly(REG_MAINKEY); // Anlegen von Schlüsselwerten mit Standarteinträge // Hier tritt Problem auf!!!!!!!!!!!!! pReg->WriteString(REG_VALUELANG, "eng"); pReg->WriteString(REG_VALUEDPATH, ""); pReg->WriteString(REG_VALUEBPATH, ""); } } catch (...) { // Sollte ein Fehler bei der Suche nach den Schlüsseln aufgetaucht sein, // wird eine Fehlermeldung ausgegeben! AnsiString asStr = "Problem with open the Registry?"; Application->MessageBox(asStr.c_str(),"Warning!" , MB_OK|MB_ICONWARNING); }Bitte um Hilfe und eine nützliche Lösung.
Danke.
-
Habe das Problem schon gefunden.
Anstatt OpenKeyReadOnly() zu verwenden muss man ReadOnly verwenden um einen Schlüssel zu öffnen. Ansonsten gibt es keinen Schreibzugriff.