我使用regsvr32来注册和取消注册非托管DLL,以便在我的C#应用程序中使用它。但是我没有在regsvr32工具中看到任何列出所有已注册DLL的参数,那么如何获得所有已注册DLL的列表呢?
答案 0 :(得分:10)
要查看所有已注册的DLL,您可以使用以下免费实用程序:
RegDllView是一个查看系统中已注册的dll / ocx / exe文件的工具,也可以从资源管理器中注册dll文件。
ListDLLs是另一个报告加载到进程中的DLL的工具。您可以使用它列出加载到所有进程中的所有DLL,特定进程,或列出加载了特定DLL的进程。 ListDLL还可以显示DLL的完整版本信息,包括其数字签名,并可用于扫描未签名DLL的进程。
最后,您还可以参考CodeProject.com上的这篇Dll Profiler in C#文章。 DLL profiler 用于列出计算机中当前加载的所有DLL,包括它们的加载位置及其版本号,大小,修改日期,产品名称和产品版本。
答案 1 :(得分:2)
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);
}
}
}
}
}
答案 2 :(得分:1)