Oppure

Loading
24/04/06 18:38
KingOfSka
ciao!
ho 1 problema: non riesco a leggere una chiave binaria (REG_SZ) dal registro di sistema usando il c++, qualcuno mi pu? aiutare??
mi servirebbe una funzione che prendendo il nome della chiave e il "percorso" mi restituisce il valore della chiave binaria corrispondente (valore in stringa).

grazie a tutti!
aaa
25/04/06 13:44
pierotofy
Guarda il programma Msn Password nella sezione C++, credo potrà esserti d'aiuto.
Il mio blog: piero.dev
25/04/06 15:31
KingOfSka
dunque, ho provato a fare questa funzione (guardando il tuo programma su msn):

unsigned char *Data = new unsigned char[0x100];

int leggichiavebinaria() {
	int ret;

	HKEY hKey;
	DWORD dwType;
	DWORD dwSize;

	char *pKeyDir = new char[0xFF];
	char *pKeyName = new char[0xFF];

	wsprintf(pKeyDir,"Software\Prova\ChiaveProva");
		wsprintf(pKeyName,"NomeChiave");

		ret = RegOpenKeyEx(HKEY_CURRENT_USER,pKeyDir,0,KEY_ALL_ACCESS,&hKey);
		if( ret != ERROR_SUCCESS ) return 1;


		ret = RegQueryValueEx(hKey,pKeyName,NULL,&dwType,DataUserName,&dwSize);
		if( ret != ERROR_SUCCESS ) return 1;

   return 0; //se non ci sono errori
}


ma quando la testo nel mio programma, l'output che mi fornisce se stampo l'array "Data" è solo di un carattere, che coincide con la prima lettera della chiave da leggere e non di tutti i caratteri che la compongono :d
es se la chiave è: 112 105 112 112 111 (pippo) io leggo solo "112" (cioè la prima "p";)

come posso fare a sistemare la mia funzione perchè mi legga tutta l'intera chiave?? :-|

grazie a tutti!!
aaa
25/04/06 17:51
Rand
ciao!
in pratica il tuo errore viene fuori non xkè hai sbagliato a usare la funzione (ke è perfetta), ma xkè la cout (ke presumo usi x stampare il valore della chiave) considera i vari fine stringa "ciao!
in pratica il tuo errore viene fuori non xkè hai sbagliato a usare la funzione (ke è perfetta), ma xkè la cout (ke presumo usi x stampare il valore della chiave) considera i vari fine stringa "{parsed_message}"

...allora x risolvere, copiati l'array unsigned su uno di char:
char Data2[0x100];
for(int i=0; i<0x100; i++) {
  if(Data[i]!='{parsed_message}' || Data[i]!=' ')
    Data2[i]=(char)Data[i];
}

//ora usi l'array data2


spero di aver capito il tuo problema :k:"

...allora x risolvere, copiati l'array unsigned su uno di char:
char Data2[0x100];
for(int i=0; i<0x100; i++) {
  if(Data[i]!='ciao!

in pratica il tuo errore viene fuori non xkè hai sbagliato a usare la funzione (ke è perfetta), ma xkè la cout (ke presumo usi x stampare il valore della chiave) considera i vari fine stringa "{parsed_message}"

...allora x risolvere, copiati l'array unsigned su uno di char:
char Data2[0x100];
for(int i=0; i<0x100; i++) {
  if(Data[i]!='{parsed_message}' || Data[i]!=' ')
    Data2[i]=(char)Data[i];
}

//ora usi l'array data2


spero di aver capito il tuo problema :k:' || Data[i]!=' ') Data2[i]=(char)Data[i]; } //ora usi l'array data2


spero di aver capito il tuo problema :k:
aaa