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