Regestry
-
Du hast meine Frage nicht beantwortet!!!
-
ich kenn mich mit registry nicht aus!! und tregistry sagt nur schon gar nix...
passt das nun?
-
Mach, was du willst. Wenn du dich mit deiner Entwicklungsumgebung kein Stück auskennen willst... meinetwegen. Aber schreibe einmal "TRegistry" in deinen Quelltext-Editor im C++Builder, gehe mit dem Mauszeiger darüber, klicke einmal, so dass der Cursor im Text blinkt, und drücke F1. Du wirst staunen, was da so steht. Du brauchst dann nur sowas zu schreiben:
TRegistry* reg = new TRegistry; reg->RootKey = HKEY_LOCAL_MACHINE; reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false); reg->WriteString("Programm", "C:\\Temp\\Programm.exe"); reg->CloseKey(); delete reg;
-
thx für deine hilfe...........
schau mal:
das geht nicht:
http://www.tipps.delphi-source.de/system/tut20001003-2.shtml
ich bin hier nicht immer als admin eingeloggt!
was soll ich machen...???will nicht immer als admin einloggen um in die registry zu schreiben!!!!cu
-
Natürlich geht das nicht:
www.tipps.delphi-source.de schrieb:
Folgendermaßen muss man vorgehen, wenn man nur Lesezugriff haben will
Du musst schon richtig lesen. Du willst doch etwas in die Registry schreiben, also Schreibzugriff haben.
-
da steht auch:
Unter Windows NT ist es "normalen" Anwendern ohne Administrator-Rechte nicht erlaubt, auf den HKEY_LOCAL_MACHINE-Schlüssel der Registry schreibend zuzugreifenaber wenn ich kein admin bin hab ich ja die rechte nicht was in die registry zu schreiben oder? wenn regedit auch nicht zugelassen wird!??
cu
-
Möglicherweise die Lösung: http://www.c-plusplus.net/forum/viewtopic.php?t=39176
-
wenn ich wüsste was da genau gemacht wird*g*
dann wäre ich zufrieden...hmm...
scheißt grösser zu sein das problem als gedacht.....;-(
-
Lies dir das doch mal genau durch. Dann wirste's auch schaffen!
-
hab 2 varianten:
// In die Registry schreiben: mit TRegistry TRegistry* reg = new TRegistry; reg->RootKey = HKEY_LOCAL_MACHINE; reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false); reg->WriteString("Programm", "C:\\Temp\\Programm.exe"); reg->CloseKey(); delete reg; // In die Registry schreiben: mit Winapi HKEY hkey; HKEY KEY = HKEY_LOCAL_MACHINE; char place[100]= {"Software\\Microsoft\\Windows\\CurrentVersion\\Run"}; char name[100]= {"Programm"}; char value[100]= {"C:\\Temp\\Programm.exe"}; RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey); RegSetValueEx(hkey, name, 0, REG_SZ, (BYTE *)value, strlen(value)); RegCloseKey(hkey);
so wie kann ich rausfinden das es den schlüssel schon gibt....will nicht immer überschreiben!!!
cu
-
ich meine, du müsstest ihn dazu versuchen auszulesen: RegQueryValueEx
-
[msdn]RegQueryValueEx[/msdn]
-
@surf: Du regst mich langsam auf. Erst sagt du, du hast Probleme mit Admin-Rechten, und jetzt geht es plötzlich doch???
-
ich hab no immer das problem mit admin recht.....nur das reinschreibn geht wenn ich admin bin...sonst ebn nicht!!!
ich will die registry auslesen ob der schlüssel schon vorhanden ist:
mach i das so:???????DWORD dwData = 256; BYTE cDaten[256] = ""; RegQueryValueEx(hKey,"Programm",0,0,cDaten,&dwData2);
cu
-
die letzten beiden Parameter könntest du auch noch auf NULL bzw. 0 setzen
-
DWORD dwData = 256;
BYTE cDaten[256] = "";
RegQueryValueEx(hKey,"Programm",0,0,0,0);wie kann ich jetzt rausfinden obs den schlüssel schon gibt?????
if(......kein schlüssel
dann schlüssel anlegenelse
keinen schlüssel anlegen da schlüssel schon vorhanden ist!!!!!!!!!!!
-
indem du den Rückgabewert überprüfst (ERROR_SUCCESS wenn alles glatt ging)
-
DWORD dwData = 256;
int iLastError = 0;
HKEY hkey;
HKEY KEY = HKEY_LOCAL_MACHINE;BYTE cDaten[256] = "";
iLastError = RegQueryValueEx(hKey,"Programm",0,0,0,0);if(!iLastError) // Wenn noch nicht in die Registry eingetragen wurde dann...
{
char place[100]= {"Software\\Microsoft\\Windows\\CurrentVersion\\Run"};
char name[100]= {"Programm"};
char value[100]= {"C:\\Temp\\Programm.exe"};RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey);
RegSetValueEx(hkey, name, 0, REG_SZ, (BYTE *)value, strlen(value));
RegCloseKey(hkey);
}
-
DWORD dwData = 256; HKEY hkey; HKEY KEY = HKEY_LOCAL_MACHINE; BYTE cDaten[256] = ""; long rOpen = RegQueryValueEx(hKey,"Programm",0,0,0,0); // warum sind die Parameter am Schluss alle 0 ??? // Wenn noch nicht in die Registry eingetragen wurde dann... if(rOpen != ERROR_SUCCESS) { char place[100]= {"Software\\Microsoft\\Windows\\CurrentVersion\\Run"}; char name[100]= {"Programm"}; char value[100]= {"C:\\Temp\\Programm.exe"}; RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey); RegSetValueEx(hkey, name, 0, REG_SZ, (BYTE *)value, strlen(value)); RegCloseKey(hkey); }
-
Das RegOpenKeyEx müsste imho vor RegQueryValueEx stehen.
Warum sind alle Parameter NULL?: ganz einfach - du bist nicht an den Daten interessiert, sondern willst nur wissen, od der Wert existiert- cDaten brauchst du also gar nicht