Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - leggere chiave registro sistema
Forum - C/C++ - leggere chiave registro sistema

Avatar
KingOfSka (Normal User)
Newbie


Messaggi: 2
Iscritto: 24/04/2006

Segnala al moderatore
Postato alle 20:38
Lunedì, 24/04/2006
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!

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6116
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:44
Martedì, 25/04/2006
Guarda il programma Msn Password nella sezione C++, credo potrà esserti d'aiuto.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
KingOfSka (Normal User)
Newbie


Messaggi: 2
Iscritto: 24/04/2006

Segnala al moderatore
Postato alle 17:31
Martedì, 25/04/2006
dunque, ho provato a fare questa funzione (guardando il tuo programma su msn):

Codice sorgente - presumibilmente C++

  1. unsigned char *Data = new unsigned char[0x100];
  2.  
  3. int leggichiavebinaria() {
  4.         int ret;
  5.  
  6.         HKEY hKey;
  7.         DWORD dwType;
  8.         DWORD dwSize;
  9.  
  10.         char *pKeyDir = new char[0xFF];
  11.         char *pKeyName = new char[0xFF];
  12.  
  13.         wsprintf(pKeyDir,"Software\\Prova\\ChiaveProva");
  14.                 wsprintf(pKeyName,"NomeChiave");
  15.  
  16.                 ret = RegOpenKeyEx(HKEY_CURRENT_USER,pKeyDir,0,KEY_ALL_ACCESS,&hKey);
  17.                 if( ret != ERROR_SUCCESS ) return 1;
  18.  
  19.  
  20.                 ret = RegQueryValueEx(hKey,pKeyName,NULL,&dwType,DataUserName,&dwSize);
  21.                 if( ret != ERROR_SUCCESS ) return 1;
  22.  
  23.    return 0; //se non ci sono errori
  24. }



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!!

PM Quote
Avatar
Rand (Ex-Member)
Pro


Messaggi: 163
Iscritto: 17/05/2005

Segnala al moderatore
Postato alle 19:51
Martedì, 25/04/2006
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 "\0"

...allora x risolvere, copiati l'array unsigned su uno di char:
Codice sorgente - presumibilmente C/C++

  1. char Data2[0x100];
  2. for(int i=0; i<0x100; i++) {
  3.   if(Data[i]!='\0' || Data[i]!=' ')
  4.     Data2[i]=(char)Data[i];
  5. }
  6.  
  7. //ora usi l'array data2



spero di aver capito il tuo problema :k:


Ero solito portare una pallottola nel taschino, all'altezza del cuore.
Un giorno un tizio mi tirò addosso una Bibbia, ma la pallottola mi salvò la vita.

(Woody Allen)
PM Quote