您的位置:首页 > 其它

如何判断DLL是否注册过?

2009-07-16 23:39 176 查看
枚举注册表:

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里面的值进行判断。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: