RegQueryValue
-
das hab ich aus RegQueryInfoKey();
die Anzahl der Values eines Keys
Mfg
-
Gibts da viell noch ne andere Fehlerquelle?
-
Hmm, mir fällt da auch nix mehr ein ;/
-
Schade, weil dann kann ich ned weitermachen und ich bin eig nimmer weit entfernt den Regeditor fertigzustellen.
-
Soll ich jetzt viell SHRegQueryValueEx() verwenden?
Mfg
-
Hmmm weiss ned wo da der Unterschied ist
-
Hast Du Dein Source geändert wie "merker" gezeigt hat???
Merke: LPDWORD != DWORD!Und Du musst ein DWORD definieren und kein LPDWORD!
-
Ja hab ich, es bringt leider nichts.
-
Hallo,
ich denke der Fehler liegt in der Generierung des Regkeys.
Hab dauernd Probleme mit den verdammten Strings.
Hier mal der gesamte Source:
#include <windows.h> #include <winreg.h> #include <stdio.h> int enumsubkeys(HKEY key); int enumvalues(HKEY subkey); extern SOCKET sendsock; extern SOCKADDR_IN address; int parameter=0; unsigned long int subkeys=0; unsigned long int values=0; unsigned long int size=200; unsigned long int index=0; char string [30] [200]; char path [30] [200]; unsigned long int buffersize=200; unsigned long int i; unsigned long int subvalues; unsigned long int zaehler=0; int rc=0; int k=0; char singlestring[200]=""; char doubleslash[2]="\\"; int nummer; int rc; HKEY rootkey[4]; int regeditor(void) { HKEY hkey; HKEY newkey[20]; rootkey[0]=HKEY_USERS; rootkey[1]=HKEY_CURRENT_USER; rootkey[2]=HKEY_LOCAL_MACHINE; rootkey[3]=HKEY_USERS; rootkey[4]=HKEY_PERFORMANCE_DATA; i=0; hkey=rootkey[parameter]; strcpy(path[0],singlestring); do { RegQueryInfoKey(hkey,NULL,NULL,NULL,&subkeys, NULL, NULL,&values,NULL,NULL,NULL,NULL); if(subkeys!=0) { rc=enumsubkeys(hkey); } else { if (values!=0) { enumvalues(hkey); } } scanf("%i",&nummer); if(i==0) { strcpy(path[i],string[nummer]); } else { strcpy(path[i], path[i-1]); lstrcat(path[i],doubleslash); lstrcat(path[i],string[nummer]); } memset(string,0,sizeof(string)); rc=RegOpenKeyEx(hkey,path[i],0,KEY_ALL_ACCESS,&newkey[k]); i=i+1; hkey=newkey[k]; k=k+1; }while(1); return 0; } int enumsubkeys(HKEY key) { for (zaehler=0,index=0;zaehler<=(subkeys);index++,zaehler++) { RegEnumKey(key,index,string[zaehler],buffersize); printf("%s\n",string[zaehler]); Sleep(90); } return 0; } int enumvalues(HKEY subkey) { char kA[255]; unsigned long int valueindex=0; unsigned long int valuesize=sizeof(kA); unsigned long int type[30]; char byte[200]; char SZ[250]; unsigned char dword=0; unsigned char euda=0; unsigned long int bytesize=sizeof(byte); unsigned long int SZsize=sizeof(SZ); unsigned long int dwordsize=sizeof(euda); char value[20][255]; int rc; for (;valueindex<values;valueindex++) { RegEnumValue(subkey,valueindex,kA,&valuesize,NULL,&type[valueindex],NULL,NULL); printf("%s",kA); if(type[valueindex]==REG_BINARY) //type-array { printf(" binaray "); printf("%x",byte); } if(type[valueindex]==REG_SZ) { printf(" string "); printf("%s", SZ); } if(type[valueindex]==REG_DWORD) { printf(" Zahl "); rc=RegQueryValueEx(subkey,value[valueindex],NULL,NULL,&dword,&dwordsize); printf("%i",rc); printf("%i\n",dword); } valuesize=sizeof(kA); } return 0; } int main() { regeditor(); return 0; }
-
Bitte helft mir ich hab da echt Probleme.