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