我有一个有趣的问题:
我编写的程序使用 DLL。安装后,程序 exe 和 DLL 都在 c:\Program Files (x86)\MyProduct 下
通常加载的 DLL 是第 3 方驱动程序。出于测试目的,我将其替换为我自己的实现。当我在程序文件夹中用我自己的 DLL 覆盖第 3 方 DLL 时,我的程序 EXE 无法启动 DLL,LoadLibraray 返回 0 并且 GetLastError 返回 -529697949。现在,当我将整个 MyProduct 文件夹复制到 c:\temp 并启动程序 EXE 时,可以加载 DLL。
所以我想我的问题与 Windows 安全有关。程序和我的 DLL 版本都是用 C++ 编写的。我的用户帐户具有管理员访问权限,我是否以管理员身份执行程序似乎并不重要。有谁知道是否有可能阻止加载 DLL 的 Windows 保护机制?
谢谢
更新
我认为问题与我的 DLL 尝试写入 DLL init 函数中的执行目录有关。在 Program Files 目录中执行时,windows 不允许这样做。