7

假设我安装了多个版本的软件,其中一些 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”下?) 答:一种方法是使用“Process Explorer”,转到“Find | Find Handle or DLL... ”,输入“comObject.dll”并单击“搜索”按钮。 然后路径显示在列表中

现在我的问题是:如果一个软件包很大,安装了数百个基于 COM 的 DLL,我不想手动打开“Peocess Explorer”并搜索每个 DLL/OCX/EXE,不仅如此,在搜索结果中,我不可能将列表内容复制出来!

我想要的只是一个像以下命令一样运行的工具,我可以在 bat 文件中运行。

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 文件夹。

4

1 回答 1

9

伟大的 Process Explorer 的命令行等价物是ListDllsHandle。这可能就是你需要的。

于 2011-10-13T06:08:54.443 回答