未能在具有完全权限控制的Windows 2008 R2中加载DLL

我开发了一个在本地运行得非常好的C#应用​​程序。

但是当我穿上服务器时出现问题。

应用程序在其引用(A.dll)中使用DLL库,并在A.dll在Temp目录中创建另一个DLL(嵌入其中,让我们称之为B.dll)的执行点中。 但是,当A.dll尝试加载B.dll时,会抛出一个异常:

system.invalidoperationexception: failed to load B.dll

我没有访问DLL的来源,是库。

所以回顾一下:

  • 该进程拥有文件和路径的完全控制权限。 (cheked)
  • 以管理员身份运行。 (选中)
  • 在我的应用程序中,如果我尝试以二进制模式打开dll,操作没有问题。
  • 在我测试过的每个操作系统上运行良好(Windows 8_64 / XP_32 / 2008_32 / 7_64),但在2008 R2 64下运行失败。
  • 我试图重新下载,重命名,重新安装B.DLL,我已经把程序放在B.DLL的相同路径等等,没有结果。
  • 所以在这一点上,我认为这是服务器上的安全问题,如“进程无法加载DLL”或类似的东西。

    例外:http://i.imgur.com/NmB2Fth.png?1

    任何人都可以向我建议任何解 我会检查更好吗? 哪里?

    PS如果我尝试注册DLL我得到了同样的错误:在Windows Server 2008 R2上注册DLL文件


    解决方案很简单。

    我使用了一个非常有用的工具,名为事件查看器 (开始 - >执行 - > eventvwr.exe)当我启动我的应用程序时,Windows日志 - >应用程序中显示新的错误事件:

    Activation context generation failed for "C:TempAPPmyfile.dll". 
    Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="x86",
    publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found.
    Please use sxstrace.exe for detailed diagnosis.
    

    快速搜索和结果是服务器需要Visual C++ Runtime for x86Visual C++ Runtime for x86 (x86,因为我的应用程序在32位应用程序池中工作)

    一旦安装了这个软件包:http://www.microsoft.com/en-us/download/details.aspx?id=5582

    一切都像魅力一样工作。

    我希望这会帮助任何人节省一些时间!

    链接地址: http://www.djcxy.com/p/44459.html

    上一篇: Fail to load DLL in Windows 2008 R2 having full permissions control

    下一篇: Using DllImport to load unmanaged dll into managed application