复制到Program Files(x86)时无法执行我的DLL

时间:2014-07-03 14:50:35

标签: c++ windows dll windows-security

我有一个有趣的问题:

我编写的程序使用DL​​L。安装时,程序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目录中执行时,窗口不允许这样做。

1 个答案:

答案 0 :(得分:0)

是的,我终于让它运行了。问题是我的DLL试图在DLL初始化期间写入exe文件夹。 Windows似乎检测到这一点并且LoadLibrary调用失败。