Alle Werte lesen
-
muss mich hier echt mal anmelden das ich editieren kann.
Also.
Mit der Methode GetKeyNames müsste es ja gehen da muss ich mal ein wenig rumprobieren
-
TStrings *list=new TStringList(); TRegistry& regkey=*new TRegistry(); regkey.RootKey=HKEY_LOCAL_MACHINE; if(regkey.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false)) { regkey.GetValueNames(list); } delete ®keyIn list stehen dann alle Werte innerhalb des Schlüssels.
Auf Die Werte kannst du z.B. so zugreifen:AnsiString blub=list->Strings[0];hf
-
kann mal einer die erste Zeile in meinem Beispiel richtig stellen und diesen Beitrag löschen?

thx
-
Halo
Wenn schon vorsagen, dann aber richtig.
TRegistry* regkey= new TRegistry(); regkey->RootKey=HKEY_LOCAL_MACHINE; if(regkey->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false)) { TStrings *list=new TStringList(); regkey->GetValueNames(list); for (int lv = 0; lv < list->Count; lv++) { AnsiString subkeyname = list->Strings[Lv]; ... } delete list; } delete regkey;/Edit : Semikolons korrigiert.
bis bald
akari
-
oh danke danke danke
ihr seid echt genial.
Ich muss mich hier echt anmelden.
-
Naja ok diese Zeile hier:
for (int lv = 0; lv < list->Count; lv++)
{
AnsiString subkeyname = list->Strings[Lv];
...
}ist überflüssig weil ich die Liste gleich so wie sie ist in eine ComboBox lade aber das konntet ihr ja nicht wissen.
Und 2Semikolons bei den deletes(beiden) haben gefehlt
-
OK Jetzt habe ich diesen Quelltext:
TRegistry* regkey= new TRegistry(); regkey->RootKey=HKEY_LOCAL_MACHINE; if(regkey->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false)) { TStrings *list=new TStringList(); regkey->GetValueNames(list); for (int lv = 0; lv < list->Count; lv++) { AnsiString subkeyname = list->Strings[lv]; ComboBox1->Items=list; } delete list; } delete regkey; ComboBox1->Visible=true;Das funktioniert auch alles wunderbar.
Aber jetzt will ich das man in der ComboBox etwas wählt und dann auf den Butten "Eintrag löschen" klickt.
Daraufhin soll der entsprechende eintrag gelöscht werden.
Aber dazu brauche ich unterschiedlich Stringnamen oder nicht?
Ich habe auch schon dass:AnsiString subkeyname[lv] = list->Strings[lv]; versucht aber das funktioniert nicht.
Wie bekomme ich es nun hin das ich unterschiedlich heißende strings habe?So geht es auch nicht:

int a=0;for (int lv = 0; lv < list->Count; lv++)
{AnsiString subkeyname[a] = list->Strings[lv];
a=a+1;
ComboBox1->Items=list;
}Wie dann?

-
Wenn ihr auhc irgendetwas wisst wonach ich in der Hilfe suchen kann könnt ihr das gerne sagen.
ICh weiß immer nicht nach was für befehlen(oder was auch immer) ich da suchn soll.
-
Hallo
dann kannst du komplett die extra StringList weglassen
regkey->GetValueNames(ComboBox1->Items);Aber dazu brauche ich unterschiedlich Stringnamen oder nicht?
Warum? Du trägst doch die namen der Keys in Klartext ein. Also must du dir nur noch merken, wie der Basischlüssel heißt (in deinem Beispiel "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run") und kannst so den Gesamtschlüsselnamen zusammensetzen.
bis bald
akari
-
switch (ComboBox1->ItemIndex) { for (int a=0;a <= list->Count;a++); { case : TRegistry& regkey=*new TRegistry(); regkey.RootKey=HKEY_LOCAL_MACHINE; bool keygood=regkey.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false); regkey.LazyWrite=false; if(keygood) regkey.DeleteValue(ComboBox1->ItemIndex ); regkey.CloseKey(); delete ®key; break; } }so weit bin ich nun bei meinem löschen-button
Und ich weß nicht weiter
Ich muss den Case noch mitzählen lassen und den ItemIndex bei DeleteValue
nur irgendwie bekomm ichs niicht hin

-
Was soll denn hier der switch sowie dir for-Schleife machen?
Soweit ich das verstanden habe, willst du den key aus der Registry löschen, der in der ComboBox angezeigt wird.
Dann vielleicht soTRegistry& regkey=*new TRegistry(); regkey.RootKey=HKEY_LOCAL_MACHINE; bool keygood = regkey.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false); regkey.LazyWrite=false; if(keygood) regkey.DeleteValue(ComboBox1->Items->Strings[ComboBox1->ItemIndex]); //evtl. noch das Ergebnis aufheben regkey.CloseKey(); delete ®key; //dann noch den Eintrag aus der ComboBox löschen
-
ja ich wusste nicht das das so einfach auch geht...
ich dachte das muss ich in eine schleife setzen und alles mitzählen lassen und per if (bei mir eben swich case) das dann löschen lassen.
Naja wenns auch so einfach geht