用一组特定的DLL运行程序



是否可以针对特定目录中的特定二进制文件而不是当前安装在系统上的二进制文件运行程序?我也无法修改应用程序的源。

最接近的方法是将更新后的DLL放在与.exe.相同的目录中

以下是程序如何查找要加载的DLL(不包括众所周知的DLL)的优先级列表。

  1. 当前进程的可执行模块所在的目录。

  2. 当前目录。

  3. Windows系统目录。GetSystemDirectory函数检索此目录的路径。

  4. Windows目录。GetWindowsDirectory函数检索此目录的路径。

  5. PATH环境变量中列出的目录。

如果您需要指定任意目录,那么项目#2就是您的朋友。您可以cd/到目标目录,然后使用完整路径从该位置运行.exe。或者,您可以创建一个窗口快捷方式,并指定"起始位置:"值来设置应用程序的当前目录。如果有问题的.exe更改了其工作目录,这将无法正常工作。

更新:虽然我现在很明显,这个建议已经过时了,但它也是唯一一个涉及使用"特定目录中的特定二进制文件"的建议,我读到它的意思是指可能不是安装.exe的目录的任意目录。此外,现在我看到它被标记为"C#",这确实让我的回答变得异常蹩脚,因为有.manifest,我想?

最简单的方法是使用LoadLibrary调用动态加载DLL。通过这种方式,您可以指定要使用的DLL副本的完整路径。

如果它是本机DLL,那么您只需要将DLL与可执行文件放在同一文件夹中。DLL搜索首先查找该文件夹。

最新更新