如何获取regsvr32工具注册的所有非托管dll的列表?

我使用regsvr32来注册和取消注册非托管DLL,以便在我的C#应用​​程序中使用它。 但是我没有在regsvr32工具中看到任何列出所有已注册DLL的参数,那么如何获得所有已注册DLL的列表呢?

要查看所有已注册的DLL,您可以使用以下免费实用程序:

  1. RegDllView是一个工具,用于查看系统上已注册的dll / ocx / exe文件,还可以从资源管理器中注册dll文件。

  2. ListDLL是报告加载到进程中的DLL的另一个工具。 您可以使用它列出加载​​到所有进程中的所有DLL,特定进程,或列出加载了特定DLL的进程。 ListDLL还可以显示DLL的完整版本信息,包括其数字签名,并可用于扫描未签名DLL的​​进程。

  3. 最后,您还可以在CodeProject.com上的C#文章中参考这个Dll Profiler 。 DLL profiler用于列出计算机中当前加载的所有DLL,包括它们的加载位置及其版本号,大小,修改日期,产品名称和产品版本。

static void Main(string[] args) { var parent = Registry.ClassesRoot.OpenSubKey("CLSID"); var subKeys = parent.GetSubKeyNames(); foreach (var subKey in subKeys) { var sub = parent.OpenSubKey(subKey); if (sub != null) { var inProc = sub.OpenSubKey("InProcServer32"); if (inProc != null) { var val = inProc.GetValue(null); if (val != null) { var name = val.ToString(); if (!string.IsNullOrWhiteSpace(name)) Console.WriteLine(name); } } } } } 

您应该能够使用注册表读取Computer\HKEY_CLASSES_ROOT\Wow6432Nodes\CLSID中的所有已注册的 Computer\HKEY_CLASSES_ROOT\Wow6432Nodes\CLSID 。 没有看过32位Windows以查看CLSIDs位置。