我有一个有趣的问题:
我编写的程序使用DLL。安装时,程序exe和DLL都在c:\ Program Files(x86)\ MyProduct
下通常,加载的DLL是第三方驱动程序。出于测试目的,我将其替换为我自己的实现。当我在程序文件文件夹中用我自己的覆盖第三方DLL时,程序EXE无法启动DLL,LoadLibraray返回0,GetLastError返回-529697949。现在,当我将整个MyProduct文件夹复制到时,让我们说c:\ temp并启动程序EXE,可以加载DLL。
所以我猜我的问题与Windows安全性有关。 programm和我的DLL版本都是用C ++编写的。我的用户帐户具有管理员访问权限,如果我以管理员身份执行程序似乎并不重要。有没有人知道是否有可能阻止加载DLL的Windows保护机制?
谢谢
更新
我认为问题与我的DLL试图写入DLL init函数中的执行目录有关。在Program Files目录中执行时,窗口不允许这样做。
答案 0 :(得分:0)
是的,我终于让它运行了。问题是我的DLL试图在DLL初始化期间写入exe文件夹。 Windows似乎检测到这一点并且LoadLibrary调用失败。