0

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

4

3 回答 3

2

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

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

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

  2. 当前目录。

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

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

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

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

Update: While it is now apparent to me that this advice is out of date, it is also the only advice that touches on using "a specific binary in a specific directory," which i read to mean arbitrary directories that may not be the directory an .exe is installed it. Also, now i see that this was tagged with "C#", which does make my answer exceptionally lame due to the availability of .manifest, i think?

于 2012-10-04T21:50:18.320 回答
1

最简单的方法是使用 LoadLibrary 调用动态加载 DLL。这样您就可以指定您喜欢使用的 DLL 副本的完整路径。

于 2012-10-04T18:09:19.417 回答
0

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

于 2012-10-04T19:41:09.003 回答