如何判断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里面的值进行判断。
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里面的值进行判断。
相关文章推荐
- 如何判断DLL是否注册了
- 如何判断IIS版本 判断IIS中.NET2.0是否注册
- 如何使用H5判断登录页面手机号码长度是否正确和账号密码不能为空,从而减少对服务器的请求(注册也一样)
- 如何在JS代码中判断客户端ocx控件是否注册成功
- 如何判断exe或dll的目标平台及是否是.NET?
- 如何判断注册用户是否已经存在(membership验证)
- 判断dll文件是否已经注册的ASP函数代码
- iOS开发如何判断字符串是否是整数,浮点数,纯数字
- C陷阱与缺陷:如何判断编译器是否支持嵌套注释?
- 查询的结果集是否为空如何判断
- 如何判断是否启用了硬件加速
- 如何判断用户输入的邮箱格式是否正确?
- C#.NET如何判断是否有缺少的using
- python 如何判断对象是否为类(class)
- 如何判断一个文件或目录是否存在
- 如何判断一个数是否为素数
- 如何用javascript JQuery 判断图片是否存在!!!
- 如何判断多个字段组成的关键字在另外一张表中是否存在
- 如何判断一个文字再服务器上是否存在