TRegistry DeleteKey funktioniert nicht



  • Hm bei mir ist auch ein komplettes Beispiel. Das heißt sowohl im BCB 5, als auch im BCB 6 ist es drin. Welche Version hast Du denn, respektive der Threadersteller?



  • Hallo

    im Builder 5 Professionell ist das Beispiel jedenfalls dabei.

    bis bald
    akari



  • TRegistry::DeleteKey Methode

    Entfernt einen bestimmten Schlüssel und die zugehörigen Daten aus der Registrierung.

    Klasse
    TRegistry

    Syntax

    [C++] bool DeleteKey (AnsiString Key);

    Beschreibung
    DeleteKey entfernt den angegebenen Schlüssel sowie die zugehörigen Daten (falls vorhanden) aus der Registrierung.
    DeleteKey gibt bei Erfolg den Wert true zurück. Im Fehlerfall lautet der Rückgabewert false.

    Verwandte Informationen
    TRegistry::CreateKey
    TRegistry::DeleteValue

    Borland® Copyright © 2005 Borland Software Corporation. Alle Rechte vorbehalten.

    das iss alles was bei mir steht, auch kein link zu nem beispiel oder so .... kann sein das ich woanders suche als ihr oder ich gar aufm schlauch steh, ich lass mich deswegen gern belehren ^^

    PS: Borland Developer Studio 2006



  • Wär nicht das erste Mal, dass bei einer neuer Version Beispiele entfernt werden...
    Zusätzlich zu dem Text von Dir, befindet sich im BCB 6 noch folgedens Beispiel:

    In dieser Ereignisbehandlungsroutine für OnClick werden alle Werte gelöscht, die in der Registrierung unter dem angegebenen Schlüssel vorhanden sind.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      TRegistry Reg = new TRegistry;
      try
      {
        Reg->RootKey = HKEY_LOCAL_MACHINE; // Abschnitt in der Registrierung
        if (!Reg->OpenKey(Edit1->Text,false))
          ShowMessage("Error opening key");
        else
        {
          TStringList Val = new TStringList;
          try
          {
            Reg->GetValueNames(Val);
            for (int i = 0; i < Val->Count; i++)
    
            {
              ShowMessage(Edit1->Text + "\n" +
                          "has an Entry Called "+Val->Strings[i]+"\n"+
                          "With a Value of "+Reg->ReadString(Val->Strings[i]));
            }
            if (Application->MessageBox("OK to delete the key and lose these values?",
                                        "Delete?", MB_YESNO) == IDYES)
              Reg->DeleteKey(Edit1->Text);
          }
          __finally
          {
            delete Val;
    
          }
        }
      }
      __finally
      {
        delete Reg;
      }
    }
    


  • Ich verwende den BCB 6 Pro, habe ein Beispiel drin in der Hilfe, aber das haut einfach nicht hin.

    TRegistry * key = new TRegistry();
     key->RootKey = HKEY_CURRENT_USER;
     key->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
     key->DeleteKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\swg");
     key->CloseKey();
     delete key;
    

    Hab's schon mit und ohne OpenKey und CloseKey versucht, genauso, wie ich schon den Pfad bei DeleteKey weg und dran gemacht hab.
    Immer das gleiche Ergebnis: DER SCH.... KEY WIRD NICHT GELÖSCHT!!!!!
    😕 HIIIIIILFEEEEEE 😕



  • Dein Source funktioniert ohne Probleme.
    Willst Du auch wirklich einen Schlüssel und nicht einen Value löschen? Aktualisierst Du die Registry-Anzeige nachdem Dein Programm beendet wurde?



  • muss man den spass nich noch irgendwie speichern wenn man das programm beendet ?



  • @Joe: Dieses Beispiel kommt bei mir erst, wenn ich oben auf Example klicke, (BCB6 Prof) was der OP vermutlich nicht gemacht hat.

    @megabyte Behauptet denn DeleteKey sie sei erfolgreich ausgeführt worden?

    Kann auch durchaus ein Berechtigungs problem sein. Nicht jeder hat die Erlaubnis in HKEY_LOCAL_MACHINE zu schreiben. CURRENT_USER istda schon viel freundlicher... (o:

    @Ceos Was soll man speichern sollen?



  • Sorry! Alle Hektik war umsonst! Ich hab DeleteKey und DeleteValue verwechselt! 😡
    Ich war der Meinung, dass das auf der rechten Seite in Regedit Keys stehen und der Value der Wert ist der in dem Key steht.

    Sorry war alles nur ein Verständnisproblem!

    Trotzdem vielen Dank für die Hilfe.
    Und ohne euch wäre ich auch nicht drauf gekommen.



  • Der Punkt geht dann wohl an mich 😋


Anmelden zum Antworten