如何找到已安装或正在使用特定DLL文件的程序?


9

我在一台服务器的SYSTEM32目录中有一个DLL文件,我不确定我是否真正需要它。

Google告诉我它通常用于什么用途,但是该软件从未安装在该系统上。不过,我确实认为服务器上其他已安装产品之一可能已包含(因此,presumaby将需要)该文件。

我在注册表中进行了搜索,搜索了文件名以及在文件的元数据中找到的一些字符串,但我无法提供任何有用的信息。(尽管ACMru键确实引起了我的注意,直到我发现它的用途。)

我还有什么能做的,就是让系统本身告诉我哪些程序安装了DLL,和/或哪些已安装程序(如果有)将使用它?

注意:工具建议很好,但是我不会在该系统上安装或运行任何其他软件。我需要使用Server 2003的默认安装上可用的任何工具。

Answers:


5

我会检查它在系统上的放置日期,并将其与系统中的其他文件进行比较以获取线索。搜索应允许您按日期搜索整个系统。

另外,在此处发布文件名将允许此处的一些熟悉它的人为您标识它。


谢谢。我可能会在另一个问题中发布文件名。我希望这个是通用的,这样它才能得到可以用于任何DLL文件的答案。
Iszi 2011年

4

您可能会检查%SystemRoot%\ Installer文件夹中的每个.MSI文件。通过Windows安装程序安装的所有(?)程序都将在此处添加其MSI,以便以后可以将其卸载。该文件夹通常有很多东西。如果/一旦您在众多MSI软件包中找到dll,则必须将软件包映射回定义明确的名称。

要使用脚本反编译msi文件,您可以尝试使用此VBS工具http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx,也可以尝试使用名为MSIDiff的程序(我从未使用过)http: //dennisbareis.com/msidiff.htm。当然,考虑到不必安装工具的限制,后者在这方面将不需要做任何工作。如果安装了cscript,则使用前者。

后一种工具可以为您完成程序包名称映射,而无需手动在注册表中搜索适当的GUID或MSI文件名。如果您知道要引用哪个表/列,则可以修改前一个工具以转储程序包名称(我不知道)。

VBS脚本仅从数据库角度检查MSI文件。关键工作完成于:database.OpenView(“ SELECT FileName FROM File”)。


这样做是否像安装所有这些设备一样代价不菲?在Windows 8上,这是412个项目,在Windows 7上,是559个项目,我认为他的数量是相等的。此外,该文件可能不是来自msi安装程序……
Tamara Wijsman

是的,它的成本很高,但是对于您想要了解所有权而又不具有预见性地对系统进行前后快照的情况,这可以提供一些见解。您还可以自动执行实际的反编译和比较功能(毕竟,这只是一个vbs脚本)。我同意这不是一个完美的解决方案,因为并非所有软件包都通过MSI安装,但是您可能会很幸运。如您所说,它们很多,因此文件可能是通过这种方式传送的。
logicalscope

我想知道是否有工具可以只在MSI文件中查找而不是反编译/解压缩它们。无论如何,在OP提出的另一个新问题中,我们正在谈论的是从安装开始就已经存在于我们系统中的文件……
Tamara Wijsman

汤姆,我很确定这个vbs只是从数据库视图检查MSI。MSI只是一个数据库。该工具使用SQL从适当的表中提取文件名。它本身并不“反编译”,我应该在我的帖子中指定它。我会修改。
logicalscope

1

Process Monitor可以为您完成此任务。只需按DLL的名称进行过滤,当程序尝试加载DLL时,就会出现一个条目,其中提及正在寻找和/或访问您提到的DLL的进程。

您还应该尝试做一个引导日志(在菜单中启用引导日志,然后重新引导并再次打开进程监视器),这对于捕获在引导时加载的程序和服务是必需的。


那些不活动的程序呢?看来我不得不打开计算机上的每个可疑程序,并在Process Monitor中注意它。
Iszi 2011年

@Iszi:如聊天中所述,枚举它们或它们的安装程序将花费很长时间。如前所述,可以使用Process Explorer进行被动监视。或像提到的music2myear一样进行搜索,可以使用“搜索所有内容”轻松完成。
Tamara Wijsman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.