复制到程序文件(x86)时无法执行我的DLL



我有一个有趣的问题:

我写的一个程序使用了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调用失败。

相关内容

  • 没有找到相关文章

最新更新