magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
4 sept. 2008 à 09:07
Pour écrire une clef dans BdR
void setTxt(HKEY HK, const char * cle, const char * nom, const char * valeur)
{
/// ----------------------------------------------------------------------------------------------------------------------
/// ---------------- BBaseRegistre::setTxt(HKEY HK ,const char* cle ,const char* nom ,const char* valeur) ----------------
/// ----------------------------------------------------------------------------------------------------------------------
/// ----- Objectif : Ecrit une valeur de type chaine de caractère dans la base de registre
/// ----- PreCond : /
/// ----- PostCond : /
/// ----- Etat : 1 (-1<0<1<2)
/// ----------------------------------------------------------------------------------------------------------------------
/// ----- HKEY HK : clef principale de la base de registre (ex : HKEY_CLASSES_ROOT)
/// ----- const char* cle : chemin d'accès à la valeur de la base de registre
/// ----- const char* nom : nom de la valeur
/// ----- const char* valeur : chaine de caractère
/// ----------------------------------------------------------------------------------------------------------------------
SECURITY_ATTRIBUTES SecAtt;
SecAtt.nLength=sizeof(SECURITY_ATTRIBUTES);
SecAtt.lpSecurityDescriptor=NULL;
SecAtt.bInheritHandle=TRUE;
HKEY Retour;
DWORD Action;
RegCreateKeyEx(HK,cle,0,"", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, & SecAtt, &Retour, &Action);
RegSetValueEx(Retour,nom,0,REG_EXPAND_SZ ,(unsigned char *)valeur,strlen(valeur)+1);
RegCloseKey(Retour);
}
pour checker si une clef est bien définie avec la valeur que tu désires
bool getTxt(HKEY HK, const char * cle, const char * nom, std::string* valeur,unsigned long tailleMaxChaine)
{
/// ----------------------------------------------------------------------------------------------------------------------------------------------------------
/// ---------------- BBaseRegistre::getTxt(HKEY HK ,const char* cle ,const char* nom ,BString* valeur ,unsigned long tailleMaxChaine) -> bool ----------------
/// ----------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- Objectif : lit la valeur alphanumérique "nom" dans la clé "cle" de la base de registre
/// ----- PreCond : /
/// ----- PostCond : /
/// ----- Etat : 1 (-1<0<1<2)
/// ----- MaJ 12/05/04 : correction bug (à l'init, entrainant un plantage)
/// ----------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- HKEY HK : clef principale de la base de registre (ex : HKEY_CLASSES_ROOT)
/// ----- const char* cle : chemin d'accès à la valeur de la base de registre
/// ----- const char* nom : nom de la clef
/// ----- string* valeur : emplacement pour la réponse
/// ----- unsigned long tailleMaxChaine(par défaut : '100') : taille du buffer // IMPERATIF sous win 95-98
/// ----------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- retour (bool) : OK
/// ----------------------------------------------------------------------------------------------------------------------------------------------------------
HKEY Retour;
long rep=RegOpenKeyEx(HK,cle,0,KEY_ALL_ACCESS,&Retour);
char*val;
{
unsigned long j;
if ((val = ((char *)malloc((size_t)((tailleMaxChaine+1)*sizeof(char)))) )== NULL)
return false;
for(j=0;j<=tailleMaxChaine;j++)
val[j]=0;
}
unsigned long type;
long rep2=RegQueryValueEx( Retour,nom,NULL,&type,(unsigned char *)val,&tailleMaxChaine);
RegCloseKey(Retour);
*valeur=val;
if(val) free(val);
return(rep==ERROR_SUCCESS && rep2==ERROR_SUCCESS);
}
utilisation :
commence par le check
puis si tout ok, fait le set puis ton code.
___________________________________________________________
Magicalement
Nono