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);
 
 
}