找回密码
 加入
搜索
查看: 4253|回复: 4

[AU3基础] 请教各位老师,如何检测某个DLL文件是否注册?

[复制链接]
发表于 2010-11-9 10:25:26 | 显示全部楼层 |阅读模式
请教各位老师,如何检测某个DLL文件是否注册?谢谢
发表于 2010-11-9 10:55:59 | 显示全部楼层
完全不懂!顶帖!等高人出现!
发表于 2010-11-9 11:19:47 | 显示全部楼层
dll为啥要检测注没注册呢,直接再注册一次不就好了,regsvr32 DLL,好像dll注册后是有信息写入系统注册表吧,我不清楚,帮不了你,貌似注册着的dll直接删是删不掉的
发表于 2010-11-9 11:21:34 | 显示全部楼层
帮你百度了一个思路,不过不是au3的语言就是了。

枚举注册表:

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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/greatwall83/archive/2009/07/16/4355149.aspx
发表于 2010-11-9 11:27:10 | 显示全部楼层
用DllCall函数时,如果失败: 设置 @error
@error: 1 不能使用这个DLL文件,
2 未知 "返回值",  
3 未在DLL文件中找到这个"函数".
4 参数数量错误.

1不就是不能使用这个dll嘛,既然不能使用,那就是没注册喽。。。。。应该。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 10:32 , Processed in 0.302768 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表