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

时间:2013-05-20 19:32:43

标签: c# windows dll windows-server-2008 windows-server-2008-r2

我开发了一个在本地运行良好的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

任何人都可以建议我解决方案吗?我会更好地检查吗?在哪里?

P.S 如果我尝试注册该DLL我得到相同的错误: Register DLL file on Windows Server 2008 R2

1 个答案:

答案 0 :(得分:2)

解决方案很简单。

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

上显示了一个新的错误事件
Activation context generation failed for "C:\Temp\APP\myfile.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 x86(x86,因为我的应用程序在32位应用程序池中工作)

安装此软件包后:http://www.microsoft.com/en-us/download/details.aspx?id=5582

一切都像魅力一样。

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