Windows 确定.exe依赖项

Windows 确定.exe依赖项,windows,vb6,winapi,Windows,Vb6,Winapi,我有一个.exe文件,我相信它是用VB6创建的。Visual Studio 6或更高版本中是否有任何工具可以让我查看应用程序运行所需的任何动态库?请尝试-Dependancy Walker。您可以查看与Dumpbin/imports隐式链接的DLL依赖项。或者依赖项Walker提供的静态视图。但是,VB6程序通常严重依赖COM组件,并且在程序运行时会按需加载。这些组件需要先注册,然后程序才能加载和使用它们 要了解这一点,您需要一个实用程序来显示程序如何使用注册表。VS6工具箱中没有用于此目的的工

我有一个.exe文件,我相信它是用VB6创建的。Visual Studio 6或更高版本中是否有任何工具可以让我查看应用程序运行所需的任何动态库?

请尝试-Dependancy Walker。

您可以查看与Dumpbin/imports隐式链接的DLL依赖项。或者依赖项Walker提供的静态视图。但是,VB6程序通常严重依赖COM组件,并且在程序运行时会按需加载。这些组件需要先注册,然后程序才能加载和使用它们

要了解这一点,您需要一个实用程序来显示程序如何使用注册表。VS6工具箱中没有用于此目的的工具,您可以使用SysInternals的ProcMon实用程序。请注意试图打开HKLM\Software\Classes\CLSID注册表项中的项的程序,该注册表项是COM组件的注册位置。您应该看到它找不到可以确定CLSID的密钥


这仍然不能让你真正到达任何地方,因为这只是一个不透明的数字,它不会告诉你DLL的名称或位置。在程序正确运行的计算机上使用Regedit.exe。找到该键,LocalServer32值将告诉您哪个DLL或OCX实现COM组件。

请注意,在程序运行时,可能会动态加载某些内容(例如COM组件)。您需要对dependency walker运行程序,并练习所有程序功能。HKLM\Software\Classes\CLSID不包括所有功能。自Win2K以来,我们已进行了每用户注册,自Vista以来,我们已实现了虚拟化每用户注册。对于早期绑定对象和后期绑定对象,隔离清单完全绕过注册表。我不知道什么是“隐式链接DLL”。也许你的意思是静态链接的?静态链接的动态库是否意味着什么?隐式链接DLL:让Vista将您的程序视为时间的牺牲品,以便虚拟化注册表,我想这可能是一个解决方案。