枚舉註冊表:
BYTE szBuf[200];
DWORD dwCount = 200;
HKEY valueKey;
if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_CLASSES_ROOT,
_T("xxx"),
0,
KEY_READ,
&valueKey))
{
AfxMessageBox("未註冊成功");
}
else
{
if(RegQueryValueEx(valueKey,"CLSID",0,0,&szBuf[0],&dwCount) != ERROR_SUCCESS)
{
RegCloseKey(valueKey);
AfxMessageBox("未註冊成功");
}
AfxMessageBox("已經註冊成功");
}
RegCloseKey(valueKey);
其中xxx爲DLL的clsid在註冊表中位置,相當於目錄。如:
CLSID//{083863F1-70DE-11d0-BD40-00A0C911CE86}//Instance//{4F5D5EB4-43CF-48ff-875D-05481C09780A}它存在不代表dll一定被註冊,有可能被反註冊了,但是註冊表沒有被清理,目錄還存在着。因此需要進一步判斷裏面的字符串值。這裏用CLSID來判斷,如果找到了CLSID說明存在。如果需要的話,可以進一步對szBuf裏面的值進行判斷。