TRegistry (Probleme mit NT ?)



  • Hi,

    ich entwickle mein Programm unter Win XP, welches später unter Win NT laufen soll. Um meine Daten in die Registry zu schreiben, nutze ich folgenden Code:

    TRegistry *Registry = NULL;
    
          try
          {
             Registry = new TRegistry;
             Registry->RootKey = HKEY_LOCAL_MACHINE;
    
             if(Registry->OpenKey("\\Software\\SWBSynor", true))
             {
                Registry->WriteString("ProductID", Edit2->Text);
                Registry->CloseKey();
                ShowMessage("Produkt erfolreich registriert");
                Application->Terminate();
             }
          }
          __finally
          {
             delete Registry;
          }
    

    Ein Freund meinte jedoch das es unter NT Probleme geben könnte, etwas in die Registry zu schreiben, da dieses nur geht wenn man Admin rechte hat. Ich weiß jetzt nicht ob das wirklich richtig ist.

    Zumindest möchte ich eine Meldung ausgeben wenn nicht in die Registry geschrieben werden kann. Wo muss ich das im Code wie einbauen?

    Falls das stimmt was mein Kumpel sagt, soll eine eine Meldung bezüglich Admin Rechte kommen.

    Mike



  • Original erstellt von <Mike>:
    Ein Freund meinte jedoch das es unter NT Probleme geben könnte, etwas in die Registry zu schreiben, da dieses nur geht wenn man Admin rechte hat.

    Das trifft mit Sicherheit zu, zumindest für bestimmte Zweige der Registry.

    Um Fehlschläge abzufangen musst du ein zusätzliches try/catch-Konstrukt einbauen. Über dessen catch-Teil kannst du dann die entsprechende Exception abfangen und darauf reagieren.

    Pseudocode:

    try
    {
      try
      {
        work_with registry();
      }
      catch (registry_schreibfehler &E)
      {
        ShowMessage(E.Message");
      }
    __finally
    {
      cleanup();
    }
    


  • Hi,

    muss ich im catch Block denn ein neues Objekt instanziieren, oder kann ich auch irgendwie einnur eine MessageBox ausgeben.

    Wie kann ich dies machen?

    Mike



  • Wenn du in einem geschützten Bereich einen Eintrag hinzufügen/ändern/löschen willst, wird eine MessageBox angezeigt, die dem User mitteilt, dass das Beschreiben der Registry nicht möglich ist.
    Also, wenn du nur ne Mitteilung ausgeben willst, so musst du nicht noch extra ne MessageBox anzeigen, dies wird vom Windows gemacht.


Anmelden zum Antworten