Base de registre : fonction gerenumvalue

cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007 - 6 nov. 2003 à 23:29
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 8 nov. 2003 à 21:46
mo code :
while (ERROR_NO_MORE_ITEMS!=RegEnumValue(//trouve le nombre de valeurs contenues dans la cle 
m_CleOuverte,//Handle de la cle ouverte
index,//index de la valeur a lire
bufftemps,//buffer pour stocker le nom des valeurs
&tailletemps,//taille du buffer bufftemps
NULL,//reservé doit etre NULL
NULL,//buffer pour stocker le type de donnee chaque valeur
NULL,//buffer pour stocker les donnes contenues dans les valeurs
NULL))//taille du buffer buffvalue
{
index++;//incremente l'index tant qu'il y a des valeurs a enumerer
}
m_DonneesValeur = new string [index];
m_TypeDonnees = new DWORD [index];
m_Valeur = new string [index];
m_NbValeur = index;
for (unsigned int indice = 0;indice!=index;indice++)
{
RegEnumValue(//trouve le nombre de valeurs contenues dans la cle 
m_CleOuverte,//Handle de la cle ouverte
indice,//index de la valeur a lire
bufftemps,//buffer pour stocker le nom des valeurs
&tailletemps,//taille du buffer bufftemps
NULL,//reservé doit etre NULL
&bufftype,//buffer pour stocker le type de donnee chaque valeur
buffvaleur,//buffer pour stocker les donnes contenues dans les valeurs
&taillevaleur);//taille du buffer buffvalue
m_Valeur[indice] = bufftemps;
m_DonneesValeur[indice] = (char )buffvaleur;
m_TypeDonnees[indice] = bufftype;

}

je ne comprend pas pourquoi avec mon code les noms des valeurs sont totalement incorect

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2003 à 00:04
Je n'ai pas le temps de comparer mais inspire toi de cela, liste de toutes les 'values' du dialer de XP et ensuite les supprime.

if(RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Dialer\\Speeddial", 0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS) return 0;
if(ERROR_SUCCESS != RegQueryInfoKey(hKey, 0, 0, NULL, 0, 0, 0, &dwValuesCount, 0, 0, 0, 0))
{
RegCloseKey(hKey); return 0;
}

for(i = dwValuesCount - 1; i >= 0; i--) {
dwValueLen = 150;
dwRet = RegEnumValue(hKey, i, apdt.szbuff, &dwValueLen, NULL, &dwType, NULL, NULL);
if(dwRet != ERROR_SUCCESS) break;
if(dwType == REG_SZ) if(RegDeleteValue(hKey, apdt.szbuff) != ERROR_SUCCESS) break;
}

BruNews, ciao...
0
cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007
8 nov. 2003 à 11:55
merci ce code m'aide beaucoup et me permet de corriger certaine erreures.
mais il me reste une erreur que je ne comprend pas : lorsque je fais plusieur appel a la fonction regenumvalue les nom des valeurs est copé, il me manque un caractere sauf lors du 1er appel ( mon buffer est le meme pour chaque appel et est largement assez grand pour contennir la plus grande chaine )
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 nov. 2003 à 12:02
tu remets bien:
dwValueLen = lenBuffer
dans ta boucle avant appel RegEnumValue ?
BruNews, ciao...
0
cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007
8 nov. 2003 à 12:07
merci beaucoup c'etait ca le probleme je ne l'avais pas mis dans ma boucle mais juste avant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Daimadoshi Messages postés 45 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 23 août 2007
8 nov. 2003 à 21:37
encors un dernier petit probleme : dans ton exemple tu ne recupere pas les donnees contenu dans la valeur,et malheureusement j'ai un probleme dessus je me retrouve avec n'importe quoi
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 nov. 2003 à 21:46
MSDN tu connais ?
RegQueryValueEx
BruNews, ciao...
0
Rejoignez-nous