进程管理器是否支持API或从控制台命令调用?

8

假设我安装了多个版本的软件,其中一些DLL被注册为COM对象。例如:

.../version1/Application.exe
             normal.dll
             comObject.dll -- register as COM to use
.../version2/Application.exe
             normal.dll
             comObject.dll -- register as COM to use
如何知道哪个comObject.dll已注册?(在“version1”或“version2”文件夹下的哪个路径?)
答:一种方法是使用“进程资源管理器”,转到“查找|查找句柄或DLL ...”,输入“comObject.dll”并单击“搜索”按钮。然后路径显示在列表中。 现在我有问题了:如果软件包很大,安装了数百个基于COM的DLL,我不想手动打开“进程资源管理器”并搜索每个DLL / OCX / EXE,更重要的是,在搜索结果中,我无法将列表内容复制出来!
我只想运行像以下命令那样的工具,并且可以在批处理文件中运行。
ProcessExplorer.exe -Find "comObject1.dll" -append "C:\temp\output.txt"
ProcessExplorer.exe -Find "comObject2.dll" -append "C:\temp\output.txt"
ProcessExplorer.exe -Find "comObject3.dll" -append "C:\temp\output.txt"

output.txt可以长成这个样子:


Process          PID   Type  Handle or DLL
comObject1.dll    1    DLL   C:\ApplicationExample\Version1\comObject1.dll
comObject2.dll    1    DLL   C:\ApplicationExample\Version1\comObject2.dll
comObject3.dll    1    DLL   C:\ApplicationExample\Version2\comObject3.dll

在上面的例子中,comObject1.dll和comObject2.dll来自Version1文件夹,而comObject3.dll来自Version2文件夹。
1个回答

10

命令行版本的进程管理工具Process Explorer有两个很好用的替代品,分别是ListDllsHandle。这可能是你所需要的。


这正是我想要的。谢谢Eran! - milesma
@eran 有没有类似的工具可以获取进程的命令行信息?我想要一个命令行工具来提取进程正在运行的命令。 - user3462473
我发现的唯一缺点是handle.exe没有列出svchost句柄,而Process Explorer可以。我知道这个答案已经有9年了。 - ColinM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接