如何从注册表中清除未使用的COM注册?

如何从注册表中清除未使用的COM注册?,com,registry,Com,Registry,我在我的机器上注册了一些COM组件(DLL),但是与这些COM组件关联的DLL已被删除(因此我无法使用regsrv32)。如何清理这些旧COM组件的注册表。我想知道是否有一个工具可以列出已注册的内容,并允许我删除我知道不再使用的组件 简易方法-oleview.exe来自Win SDK-查看注册表选项卡。 在我的机器上,它是这样的:“C:\ProgramFiles(x86)\Windows Kits\8.0\bin\x64\oleview.exe”它是Visual Studio安装的一部分。或者您

我在我的机器上注册了一些COM组件(DLL),但是与这些COM组件关联的DLL已被删除(因此我无法使用regsrv32)。如何清理这些旧COM组件的注册表。我想知道是否有一个工具可以列出已注册的内容,并允许我删除我知道不再使用的组件

  • 简易方法-oleview.exe来自Win SDK-查看注册表选项卡。 在我的机器上,它是这样的:“C:\ProgramFiles(x86)\Windows Kits\8.0\bin\x64\oleview.exe”它是Visual Studio安装的一部分。或者您可以单独免费下载:它将显示与已注册组件相关的所有注册表项,然后使用regedit.exe手动删除它们

  • 手动(您不仅可以在本地计算机级别注册COM类,还可以在用户级别注册COM类,因此您应该非常小心,因为HKCR是HKLM\Software\Classes密钥和HKCU\Software\Classes密钥的合并视图。):

    • 按HKCR中DLL的名称搜索注册表(例如:HKEY_CLASSES_ROOT\CLSID{9B208FF8-F6B0-4290-94DE-7A4E857D8C4A}\InprocServer32),其中GUID将对应于您的coclassCLSID。让它成为一个向导吧
    • 然后按GUID_A搜索并删除其他条目(可选):
    • ProgID如HKEY\U CLASSES\U ROOT\YourServerName.YourCoclassName\CLSID={GUID\U A}
    • HKEY_CLASSES_ROOT\TypeLib\{GUID_A}中的TypeLib
    • HKEY_CLASSES_ROOT\AppID\{APPIDGUID},其中{APPIDGUID}可以从项目符号步骤1中的CLSID条目中提取
    • HKEY_类\u根\接口{IID}。用于可封送的接口-要找到它,可以使用inproc服务器(另一个)的CLSID,该服务器为该接口实现代理存根。我希望您的COM服务器没有可封送的接口

  • 理论上,该组件可以在注册表或其他地方执行任何操作(当然,只能被权限阻止)。