IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

lire clé de la base de registre


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de rzayani
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut lire clé de la base de registre
    Bonjours,
    j'ai implementé une methode qui fait un parcour de HKEY_CLASSES_ROOT\\CLSID et ensuite je n'arrive pas à lire la valeur de
    HKEY_CLASSES_ROOT\\CLSID\\ ( GUI)\\InprocServer32 puis la Valeur de (Default)
    Voila Le boucle pour parcourir la base de regitre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    HRESULT hr = S_OK;
     
    		HKEY hk = HKEY_CLASSES_ROOT;
    		TCHAR szKey1[256];
    		HKEY hProgID,hProgID1,hProgID2, hProgID3;
     
    		CString progid = "";
            int returnValue; 
            DWORD dwLen; 
            LPBYTE dwKeyEn;
     
    	CHAR     achClass[MAX_PATH] = "";  // buffer for class name 
    	DWORD    cchClassName = MAX_PATH;  // size of class string 
    	DWORD    cSubKeys;                 // number of subkeys 
    	DWORD    cbMaxSubKey;              // longest subkey size 
    	DWORD    cchMaxClass;              // longest class string 
    	DWORD    cValues;              // number of values for key 
    	DWORD    cchMaxValue;          // longest value name 
    	DWORD    cbMaxValueData;       // longest value data 
    	DWORD    cbSecurityDescriptor; // size of security descriptor 
    	FILETIME ftLastWriteTime;      // last write time 
     
    		DWORD j; 
    		DWORD retValue; 
     
    		CHAR  achValue[MAX_VALUE_NAME]; 
    		DWORD cchValue = MAX_VALUE_NAME; 
     
    if(::RegOpenKey(hk, "CLSID", &hProgID) == ERROR_SUCCESS) 
    		{
    for(int nIndex2 = 0; ::RegEnumKey(hProgID, nIndex2, szKey1, 256) == ERROR_SUCCESS; nIndex2++) 
    			{
     
     
    if(::RegOpenKey(hk, "CLSID\\"+ (CString )szKey1 + "\\InprocServer32", &hProgID1) == ERROR_SUCCESS) 
    				{   
    		CString ClassID = (CString )szKey1;
    		CString ProgID;
     //*********** ici je veux lire "CLSID\\"+ (CString )szKey1 + "\\InprocServer32" la valeur qui est par default
     
     
                                               ::RegCloseKey(hProgID1);	
    				}
    			}
    			::RegCloseKey(hProgID);
     
     
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Utilise RegQueryValueEx.

  3. #3
    Membre confirmé Avatar de rzayani
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut lire clé de la base de registre
    j'ai utilisé RegQueryValueEx mais la valeur retourner pour le champs - Default de la base de registre est vide
    - alors que si je met ThreadingModel au lieu de Default il retourne la valeur correct.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(int nIndex2 = 0; ::RegEnumKey(hProgID, nIndex2, szKey1, 256) == ERROR_SUCCESS; nIndex2++) 
    {
     
    if(::RegOpenKey(hk, "CLSID\\"+ (CString )szKey1 + "\\InprocServer32", &hProgID1) == ERROR_SUCCESS) {   
     
     RegQueryValueEx(hProgID1, "(Default)" , 0, &DataType, NULL,&lenKeyValue);
         RegQueryValueEx(hProgID1, "(Default)" , 0, &DataType,(LPBYTE)lpszNIC_Description, &lenKeyValue);
    add->listBox2->insertItem(lpszNIC_Description);
     
     
                                               ::RegCloseKey(hProgID1);	
    				}
    			}

  4. #4
    Membre confirmé Avatar de rzayani
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut lire clé de la base de registre
    c bon j'ai trouvé la solution, il faut mettre 0 au lieu de "Default".

    Merci pour votre réponse Mr Aurelien.Regat-Barrel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lire(et modifier) la base de registres d'une machine locale(ou distante)?
    Par punto dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 22/11/2008, 16h00
  2. lire à partir de la base des registres
    Par lolita4882 dans le forum C++
    Réponses: 1
    Dernier message: 23/11/2007, 18h13
  3. Lire une donnée dans la base de registre
    Par K.othmane dans le forum Langage
    Réponses: 1
    Dernier message: 06/01/2006, 11h32
  4. [C#] Lire une base de registre distante
    Par Scorff dans le forum C#
    Réponses: 2
    Dernier message: 08/11/2005, 14h39
  5. Comment lire la base de registres d'une machine distante ?
    Par chtiot dans le forum Web & réseau
    Réponses: 4
    Dernier message: 17/06/2005, 12h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo