我有一个有趣的问题:
我写的一个程序使用了DLL。安装后,程序exe和DLL都位于c:Program Files (x86) MyProduct
下。加载的DLL通常是第三方驱动程序。出于测试的目的,我用自己的实现代替了它。当我用我自己的在程序文件文件夹中覆盖第三方DLL时,我的程序EXE无法启动DLL, loadlibrary返回0,GetLastError返回-529697949。现在,当我将整个MyProduct文件夹复制到c:temp并启动程序EXE时,DLL就可以加载了。
所以我想我的问题与Windows安全有关。程序和我的DLL版本都是用c++编写的。我的用户帐户具有管理员访问权限,如果我以管理员身份执行程序,似乎并不重要。有人知道是否有一种windows保护机制可以阻止DLL被加载吗?
谢谢
我认为这个问题与我的DLL试图写入DLL初始化函数中的执行目录有关。当在程序文件目录下执行时,windows不允许这样做
是的,我终于把它修好了。问题是,我的DLL试图写入DLL初始化期间的exe文件夹。Windows似乎检测到这一点,LoadLibrary调用失败。