Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在具有完全权限控制的Windows 2008 R2中加载DLL_C#_Windows_Dll_Windows Server 2008_Windows Server 2008 R2 - Fatal编程技术网

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

C# 无法在具有完全权限控制的Windows 2008 R2中加载DLL,c#,windows,dll,windows-server-2008,windows-server-2008-r2,C#,Windows,Dll,Windows Server 2008,Windows Server 2008 R2,我开发了一个C#应用程序,在本地运行得非常好 但是当我在服务器上安装时出现了一个问题 应用程序在其引用(a.DLL)中使用一个DLL库,在执行点,a.DLL在临时目录中创建另一个DLL(嵌入其中,我们称之为B.DLL)。 但当A.dll尝试加载B.dll时,会引发异常: system.invalidoperationexception: failed to load B.dll 我无法访问DLL源,它们是库 因此,总结一下: 进程对文件和路径具有完全控制权限。 (勾选) 正在像管理员一样运行

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

但是当我在服务器上安装时出现了一个问题

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

system.invalidoperationexception: failed to load B.dll
我无法访问DLL源,它们是库

因此,总结一下:

  • 进程对文件和路径具有完全控制权限。 (勾选)
  • 正在像管理员一样运行。(勾选)
  • 在我的应用程序中,如果我尝试以二进制模式打开dll 操作没有问题
  • 在我测试过的每个操作系统(Windows 8_64/XP_32)上运行良好/ 2008_32/7_64),但在使用2008 R2 64时失败
  • 我尝试过重新下载、重命名、重新安装B.DLL,我将程序放在B.DLL的同一路径中,等等,但没有结果
因此,在这一点上,我认为这是服务器上的一个安全问题,比如“进程无法加载DLL”或类似的问题

例外情况:

有人能给我建议解决方案吗?我能检查一下吗?在哪里

附言 如果我尝试注册dll,则会出现与此相同的错误:
解决方案很简单

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

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.
<> p>快速搜索,结果是服务器需要x86 <代码>代码C++ > VisualC++运行时(x86,因为我的应用程序在32位应用程序池中工作)

安装此软件包后:

一切都很顺利


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

您还安装了B的所有依赖项吗?是的,正如我前面所说的,在所有其他平台上都运行良好。(不安装任何东西)这种“嵌入式DLL加载器”黑客迟早会失败。再加上一些糟糕的异常处理,你就不知道出了什么问题。“加载失败”当然没有帮助。这是开源的,你可以做得更好。