如何判断DLL是否注册过?

枚举注册表:

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里面的值进行判断。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值