在Windows服务器上加载临时目录中的dll失败

本文关键字:dll 失败 服务器 Windows 加载 | 更新日期: 2023-09-27 18:14:16

我开发了一个c#应用程序,在本地运行得很好。

但是当我打开服务器时出现了一个问题。

应用程序在执行时使用一个DLL库(A.dll),这个A.dll复制(或在第一次执行时创建)另一个DLL (B.dll)在AppData/Local/TEMP目录下。但是,当a.d dll试图加载b.d dll时,会抛出异常:

system.invalidoperationexception: failed to load B.dll

我尝试以管理员身份运行主exe,但没有结果。并且我认为权限是ok的,毕竟是TEMP目录。

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

谁能给我提个建议?我再检查一下好吗?在哪里?

在Windows服务器上加载临时目录中的dll失败

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

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

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

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

希望这对你有帮助!