假设我安装了多个版本的软件,其中一些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文件夹。