如何知道DLL是否被注册?

在旧机器(Windows XP)中注册DLL时,regsrv总是说注册成功了。 即使用户没有注册权限,也会发生这种情况。

用dll的名字,是否有一个命令,我可以在命令行运行来validation是否安装了DLL?

我发现这个链接: 我怎样才能知道一个DLL是否已经注册? :

由于DLL注册可以包含任意操作,所以没有通用的方法来确定是否发生任意DLL的注册。

要确定一个DLL是否已被注册,您需要引入特定领域的知识。 如果你知道一个DLL注册一个特定的CLSID的COM对象,你可以检查该CLSID是否确实被注册了。

好吧,这是不可能的,但DLL通常注册自己在寄存器中创build一个条目。 解决方法是:

  1. 首先你必须发现DLL的COM GUID。 如果您有一台机器已经注册,您可以:
    1. 打开registry并search您的DLL文件名
    2. 如果它已注册,您将在TypeLib下的一个键下find文件名。 密钥将如下所示:{9F3DBFEE-FD77-4774-868B-65F75E7DB7C2}
  2. 现在你已经知道了DLL GUID,你可以在DOS提示符下使用这个命令来search它: reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}" reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"

更好的答案可以让我在注册之前直接从文件中findGUID。 至less这样你可以创build一个脚本来安装并validation它是否成功安装。

我需要检查一个具有特定名称的DLL是否已经注册,并且在我的BAT中使用了这个命令:

 reg query HKLM\SOFTWARE\Classes /s /f whatever.dll if errorlevel 1 goto DLL_MISSING 

如果错误级别在reg query找不到任何东西时将控制权发送给标签。 您可能需要更改您search的registry部分(在我的案例中, HKLM'... ,更具体的path更快,否则需要很长的时间)。

可以根据需要处理输出,可以获取条目的GUID,但是这不在reg查询命令的范围之内。