Oppure

Loading
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:
#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
22/02/11 21:13
HeDo

l'msdn è tua amica:

RegOpenKeyEx: msdn.microsoft.com/en-us/library/…(v=vs.85).aspx
RegCreateKeyEx: msdn.microsoft.com/en-us/library/…(v=vs.85).aspx
RegCloseKey: msdn.microsoft.com/en-us/library/…(v=vs.85).aspx
RegDeleteKey: msdn.microsoft.com/en-us/library/…(v=vs.85).aspx
RegOpenCurrentUser: msdn.microsoft.com/en-us/library/…(v=vs.85).aspx
aaa