1

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

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

谢谢你们。

4

1 回答 1

0

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

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

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

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

希望这可以帮助!

于 2017-06-06T14:39:56.043 回答