Registry Eintrag abfragen



  • String a="test1", b="test2", c="test3",registry-eintrag1, registry-eintrag2, registry-eintrag3;
    
    if (registry-eintrag1=a) Application->MessageBox("Info","jo", 32);
    else Application->MessageBox("Info","noe", 32);
    if (registry-eintrag2=b) Application->MessageBox("Info","jo", 32);
    else Application->MessageBox("Info","noe", 32);
    if (registry-eintrag3=c) Application->MessageBox("Info","jo", 32);
    else Application->MessageBox("Info","noe", 32);
    

    so soll das in etwa aussehen, nur weiß ich nicht wie ich die registry nach den einträgen abfrag und die dann in nen String bekomm, falls ich es nicht schon in nem String geliefert bekomm.

    hoffe ihr könnt mir weiterhelfen.

    greez

    Weedy



  • TRegistry?



  • hab ich mir schon angeschaut, versteh aber leider net wie ich das umsetzen soll...

    (<== volln00b *g*)





  • Ich hab bei "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\{90110407-6000-11D3-8CFE-0150048383C9}" unter dem namen "DisplayName" den Wert "Microsoft Office Professional Edition 2003" stehen.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    //Eine neues TRegistry Object angelegen
    TRegistry& regkey=*new TRegistry();
    
    //Wenn abweichend von HKEY_CURRENT_USER den RootKey setzen (das ist ein INT-Wert!!):
    regkey.RootKey=HKEY_LOCAL_MACHINE;
    
    //Den gewünschten Schlüssel vorgeben
    //hier jetzt false (nur lesen wenn auch da)
    bool keygood=regkey.OpenKey("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{90110407-6000-11D3-8CFE-0150048383C9}",false);
    
    //Wenn ein gültiger Schlüssel da ist
    if(keygood)
    	{
    
     //Wenn unser Wert da ist
    	 if(regkey.ValueExists("DisplayName"))
    		{
    
     	//wird er in die Variable bo (bool) gelesen
    	    //   bool bo=regkey.ReadBool("DisplayName");
    		}
    String st;
     //Wenn unser Wert da ist erhält die
    	//Variable st den Inhalt ansonsten "kein Wert"
    
    regkey.ValueExists("Microsoft Office Professional Edition 2003")?st=regkey.
                ReadString("DisplayName"):st="kein Wert";
                Edit1->Text=st;
                Label1->Caption=st;
    	}
    //Registry schliessen
    regkey.CloseKey();
    
    //Objekt löschen
    delete &regkey;
    }
    

    So hab ichs gemacht, bekomme aber immer "kein Wert" als ausgabe, möchte aber den Wert von "DisplayName" also "Microsoft Office Professional Edition 2003" ausgegeben haben, was hab ich falsch gemacht ?

    greez

    Weedy



  • Lies dir die Seite nochmals durch und versuche zu verstehen:

    //Wenn unser Wert da ist
    if(regkey.ValueExists("DisplayName"))
    {

    //wird er in die Variable bo (bool) gelesen
    // bool bo=regkey.ReadBool("DisplayName");
    }

    Wozu das? Da sind 2 Beispiele einer für bool einer für String. Brauchst du bool?

    regkey.ValueExists("Microsoft Office Professional Edition 2003")?st=regkey.
                ReadString("DisplayName"):st="kein Wert";
    

    Schau nochmal nach: Warum prüfst du, ob ein etwas da ist, um dann etwas anderes zu lesen?



  • autsch, ok ich hab net verstanden gehabt wie man das mit dem namen, wert und verzeihcnis machen muss, jetzt funktionierts...

    THX 4 HELP

    Weedy


Anmelden zum Antworten