Die Registry
-
Hab nen neues Problem...Post steht ganz unten...
hallo zusammen
ich hab mal wieder nen Problem mit der Registry...vorweg: ja es gibt ne FAQ hab ich auch schon reingeschaut, kann aber mein Prob dort nicht finden. Vielleicht kann mir ja einer Helfen.Ich hab unter HKEY_CURRENT_USER einen Ordner "TEST" erstellt. (funzt)
In diesem Ordner habe ich einen Schlüssel "TestKey" erstellt. (funzt auch)
nun will ich nur den Schlüssel "TestKey" löschen. Dazu benutze ich folgenden Code:RegDeleteKey(HKEY_CURRENT_USER,"TEST\\TestKey");
das funzt aber nicht.
wenn ich nun aberRegDeleteKey(HKEY_CURRENT_USER,"TEST");
benutze, löscht er den Ordner "TEST".
Wie kann ich also nur den "TestKey" löschen ?
THX schonmal vorweg
CU Laubi
[ Dieser Beitrag wurde am 15.01.2003 um 16:00 Uhr von Laubfrosch editiert. ]
[ Dieser Beitrag wurde am 16.01.2003 um 14:02 Uhr von Laubfrosch editiert. ]
[ Dieser Beitrag wurde am 16.01.2003 um 14:11 Uhr von Laubfrosch editiert. ]
-
Das ist noch lange kein Grund einen roten Kopf zu bekommen!
-
für mich als anfänger schon, weil ich darin keine logik sehe einen ganzen ordner löschen zukönnen aber einen Schlüssel nicht...bin halt verzweifelt. Vielleicht hätte :*( besser gepasst...
SORRY FÜR DEN ROTEN KOPF !!!
aber hilft mir bitte dennoch *bettel*
cu Laubi
-
Du verwechselt da was. Die 'Keys' sind die Ordner, die Links im Registrierungsordner stehen. Die Werte rechts sind die 'Values', deshalb kannst du nicht RegDeleteKey nehmen, sondern RegDeleteValue: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/regdeletevalue.asp
cya
-
Das mit dem Value macht sinn, hat trotzdem nicht geklappt. Ich poste mal den Code.
if(SendMessage (hwnd_CheckBox10, BM_GETCHECK, BST_CHECKED, 0)){ settings.bCheckbox10 = true; RegOpenKeyEx(HKEY_CURRENT_USER,"TEST",0,KEY_ALL_ACCESS,&hKey); RegDeleteValue(HKEY_CURRENT_USER,"TestKey"); RegCloseKey(hKey); } else{ settings.bCheckbox10 = false; RegCreateKeyEx(HKEY_CURRENT_USER,"TEST",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0); RegSetValueEx(hKey,"TestKey",0,REG_SZ,c_cb10_t,sizeof(c_cb10_t)); RegCloseKey(hKey); }
Dieser Code funzt leider nicht richtig... das erstellen in der else Anweisung klappt.
Kann mir einer helfen ?THX
cyall[ Dieser Beitrag wurde am 15.01.2003 um 18:28 Uhr von Laubfrosch editiert. ]
-
Du solltest bei RegDeleteValue(HKEY_CURRENT_USER,"TestKey"); auch dein hKey vorne einsetzen, denn darin soll ja der Value gelöscht werden!
-
Danke flenders...
war der Fehler...
Laubi
-
Halöle..
Also hier mein neues Problem:
Ich wollte einige einträge in Regis machen und werte setzen. Eigentlich nicht so schwer. Jetzt will ich das mit einer for Schleife lösen.
Dazu wollte ich ein mehrdimensionales array erzeugen und dann mit der for schleife die einträge abarbeiten.
ich gib euch mal den Code. Is a bisl schwierig zu beschreiben...HKEY hKey; char cSysString[2][30]={ "Anzeige", "Automatische Updates"} RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\DisallowCpl",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0); for(int i=1;i<=26;i++){ RegSetValueEx(hKey,i,0,REG_DWORD,cSysString[i],sizeof(cSysString[i])); } RegCloseKey(hKey);
Jetzt gibt er mir mehrere Fehlermeldungen, wenn ich das compilieren will
F:\C++\Visual\windows_window\window1.cpp(1105) : error C2664: 'RegSetValueExA' : Konvertierung des Parameters 2 von 'int' in 'const char *' nicht moeglich Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat F:\C++\Visual\windows_window\window1.cpp(1109) : error C2181: Ungueltiges 'else' ohne zugehoeriges 'if' F:\C++\Visual\windows_window\window1.cpp(1384) : error C2601: 'WinMain' : Lokale Funktionsdefinitionen sind unzulaessig F:\C++\Visual\windows_window\window1.cpp(1455) : fatal error C1004: Unerwartetes Dateiende gefunden Fehler beim Ausführen von cl.exe.
kann damit einer etwas anfangen ?
wäre super wenn mir einer Helfen könnte...Danke schonmal vorweg
bis denne Laubi
-
Was das ganze machen soll ist mir zwar nicht klar, aber wenn du nen String schreiben willst brauchst du REG_SZ anstelle von REG_DWORD!
-
Ich will die inhalte der Systemsteuerung verstecken...
das macht man in dem man unter dem Schlüssel
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowCpl
Werte erstellt. Diese Werte haben als namen 1,2,...,x und als inhalt bekommen die zum beispiel System oder Anzeige. Damit verschwinden die beiden Icons aus der Systemsteuerung.
Nun wollte ich die Forschleife benutzen um die Werte zu erstellen. Das Array wollte ich benutzen um den Inhalt einzustellen. und das ganze halt mit einer schleife. Ich wollte nicht 26mal den Code mit hand erstellen...Ich hoffe ich konnte dir mit meine neuen erläuterung helfen...
cya Laubi
Ps: Hab den DWORD in SZ geändert, läuft aber immer noch nich...sagt immernoch das mit dem 2. Parameter...
[ Dieser Beitrag wurde am 16.01.2003 um 14:33 Uhr von Laubfrosch editiert. ]
-
Du musst aus deinem i erst einen String machen - z.B. mit wsprintf oder itoa
-
hi flender...
ich schnall die funktion nich...hab auch schon bei msdn nachgeschaut. hab nur herausgefunden, dass das die windoof version von sprintf ist
...hilft mir aber nicht weiter...könntest evtl. mal nen kleinen beispiel code posten *bettel*
danke
cu Laubi
-
versuch's mal so:
char buffer[3]; itoa(i,buffer,10);
Die 10 gibt hierbei das Zahlensystem (die Basis) an - hier Dezimal!
-
funzt leider immer noch nicht
hast du noch ne andere Idee?
cu
-
ich glaub ich habe die Fehler gefunden...es lässt sich zumindes compilieren..
aus i hab ich (char *)i gemacht und das Array habe ich von char auf const unsigned char geänder...danke für die Hilfe
CU Laubi
-
du musst dann statt dem i in den Funktionsaufruf natürlich auch buffer einsetzen!
-
Versuchs mal so:
HKEY hKey; int i=0; char cSysString[2][30]={"Anzeige","Automatische Updates"} RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\DisallowCpl",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL); for(i=1;i<=26;i++) { char sztemp[3]=""; itoa(i,sztemp,10); RegSetValueEx(hKey,sztemp,0,REG_SZ,(BYTE*)cSysString[i],strlen(cSysString[i])); sztemp[0]='\0'; } RegCloseKey(hKey);
[ Dieser Beitrag wurde am 16.01.2003 um 17:31 Uhr von BiGFusel editiert. ]
[ Dieser Beitrag wurde am 16.01.2003 um 17:32 Uhr von BiGFusel editiert. ]
-
hiho BiGFusel
ich hab mal dein code getestet...aber der schreibt leider auch keine Werte...
wenn ich die werte einzelnt ohne schleife eingebe funzt das ding auch nichtwenn einer noch ne idee hat, bitte posten *verzweifeltsein*
cu Laubi
-
> for(i=1;i<=26;i++)
Wieso 26??? Das muss doch so heißen:
for(int i = 0;i < 2;i++)
(Da muss man aber das "int i = 0;" oben weglassen)Wenn das immer noch nicht funktioniert, probier mal SHSetValue: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/shlwapi/registry/shsetvalue.asp
cya
-
Also bei mir funktioniert sein Code - zumindest schreibt er was (Müll)!
Dies liegt aber daran, dass deine Schleife bei 0 beginnen muss und nur bis 1 laufen darf, da du ja auch nur zwei Stings in deinem Array hast!
Außerdem fehlt nach der } des Arrays der Strichpunkt :pDa war wohl jemand schneller
[ Dieser Beitrag wurde am 16.01.2003 um 18:22 Uhr von flenders editiert. ]