无法在Windows Server上的Temp Directory中加载dll

时间:2013-05-17 21:00:17

标签: c# windows exception dll permissions

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

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

应用程序在执行点使用DLL库(A.dll),这个A.dll副本(或在第一次执行时创建)AppData / Local / TEMP目录中的另一个DLL(B.dll) 。但是当A.dll尝试加载B.dll时,会抛出异常:

system.invalidoperationexception: failed to load B.dll

我试图以管理员身份运行主exe,但没有结果。而且我认为权限还可以,毕竟是TEMP目录。

我没有访问DLL源代码,是库。

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

谢谢大家。

1 个答案:

答案 0 :(得分:0)

您是否检查过系统不会限制临时目录中的代码执行,例如使用SRP还是AppLocker?

这通常是在组策略中设置的,现在通常是一个明智的限制,以防止诸如偷渡安装程序和加密锁定程序恶意软件之类的事情。

您可以尝试从%TEMP%运行可执行文件并查看是否收到拒绝访问错误来验证这一点。

如果是这种情况,您可以尝试重新定位TEMP(因为SRP通常默认将您锁定在%USERPROFILE%\ AppData \ Local \ Temp之外,并且移动Temp文件夹将具有所需的效果。

希望这有帮助!