22/02/11 21:02
Saf
Ho creato una chiave chiamata "Prova SAF" nel registro all'interno di HKEY_CURRENT_USER per testare l'efficacia della funzione RegQueryValueEx().
Il risultato è che legge la chiave, di preciso legge il tipo e la dimensione e li salva come dovrebbe in type e count, ma il contenuto vero e proprio no(tant'è che mi da il messaggio di errore!!!).
In output non mi da quello che ho scritto nella chiave...
Sostanzialmente il valore iniziale della variabile value non cambia..
___________________________________________________
Risolto: la variabile count è la lunghezza del buffer, ma è un valore che la funzione legge in ingresso e poi restituisce in output, pertanto prima assegnavo il buffer lungo 0 byte è quindi non ci stava il contenuto in value, aumentando il valore iniziale riesco a leggere tutto il contenuto!!!
Ho risolto processando il tipo di errore. Mi sono accorto che dava "Error_more_data"!!
Codice del programma di prova:
Il risultato è che legge la chiave, di preciso legge il tipo e la dimensione e li salva come dovrebbe in type e count, ma il contenuto vero e proprio no(tant'è che mi da il messaggio di errore!!!).
In output non mi da quello che ho scritto nella chiave...
Sostanzialmente il valore iniziale della variabile value non cambia..
___________________________________________________
Risolto: la variabile count è la lunghezza del buffer, ma è un valore che la funzione legge in ingresso e poi restituisce in output, pertanto prima assegnavo il buffer lungo 0 byte è quindi non ci stava il contenuto in value, aumentando il valore iniziale riesco a leggere tutto il contenuto!!!
Ho risolto processando il tipo di errore. Mi sono accorto che dava "Error_more_data"!!
Codice del programma di prova:
#include <windows.h> #include <winreg.h> #include <stdio.h> char value[255]="iniziale"; DWORD count=99;//dimensione in byte dedicata al buffer DWORD type=0; DWORD dwRet; int main(){ printf("Inizializzazione\n"); printf("________________________\nValori prima del RegQuery\nValue:%s\nSize key:%d\nType key:%d\n________________________\n",value,count,type); dwRet=RegQueryValueEx(HKEY_CURRENT_USER, TEXT("Prova SAF"), 0, &type, (LPBYTE)&value, &count); if(dwRet==ERROR_SUCCESS){ //no errori printf("%s\n\n",value); } else if(dwRet==ERROR_MORE_DATA){ printf("Errore buffer corto\n\n"); } else if(dwRet==ERROR_FILE_NOT_FOUND){ printf("Errore CHIAVE NON TROVATA\n\n"); } else { //errore generico printf("Errore\nValue:%s\nSize key:%d\nType key:%d\n\n",value,count,type); } system("pause"); }
Ultima modifica effettuata da Saf 23/02/11 20:43
aaa