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
| void* AllocRegistre(size_t taille)
{
return new char[taille];
}
void FreeRegistre(void*pv)
{
char* p = static_cast< char* >(pv);
delete[] p;
}
char* LectureRegistre()
{
HKEY hk = NULL;
LPBYTE pValeur=NULL;
LPCTSTR const cle = _T("SYSTEM\\CurrentControlSet\\Services\\USBSTOR\\Enum");
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, cle, 0, KEY_READ, &hk) == ERROR_SUCCESS)
{
DWORD sizeValeur=0; /* Pas un pointeur ici */
DWORD type = 0;
if(RegQueryValueExA(hk, "0", NULL, &type, NULL, &sizeValeur) == ERROR_SUCCESS && type==REG_SZ)
{
pValeur = static_cast< LPBYTE >(AllocRegistre(sizeValeur));
if(RegQueryValueExA(hk, "0", NULL, NULL, pValeur, &sizeValeur) == ERROR_SUCCESS)
{
// OK!
}
else
{
MessageBox(NULL, _T("Erreur de lecture de la clé registre contenant les infos sur la clé USB"), NULL, MB_OK|MB_ICONERROR);
FreeRegistre(pValeur), pValeur=NULL;
}
}
else
{
MessageBox(NULL, _T("Erreur de lecture de la clé registre contenant les infos sur la clé USB (2)"), NULL, MB_OK|MB_ICONERROR);
}
RegCloseKey(hk);
}
else
{
MessageBox(NULL, _T("Erreur d'ouverture de la base de registre pour lire les infos sur la clé"), NULL, MB_OK|MB_ICONERROR);
}
return pValeur;
} |
Partager