【发布时间】:2014-12-04 07:04:29
【问题描述】:
我有一个 winforms 应用程序,它在运行时使用 Assembly.LoadFrom(String) 加载一些 dll(我也与应用程序一起编写和安装)。 dll位于exe所在路径的子目录中。
有时,应用程序无法在特定计算机中启动并出现异常“无法加载文件或程序集 'mydll, Version=1.2.4.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。失败授予最低权限请求。(来自 HRESULT 的异常:0x80131417)”和“System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied,布尔值 checkExecutionPermission)"。
代码很简单:
Assembly^ myAssembly = Assembly::LoadFrom(path);
dll 需要在运行时加载,因为它们是可选的。
我一直在研究这么久,但我发现的所有内容都与 asp.net 有关,这对我没有多大帮助。我没有使用任何 asp.net。 它只发生在我无法访问的非常非常少的机器上
有没有一种方法可以保护应用程序不受此影响并加载 DLL?显然,我可以处理异常,但最终我需要加载 dll。
【问题讨论】:
-
这是您客户的 IT 人员只能可靠地排除故障的那种问题。他们在部署您的应用程序时做了一些不寻常的事情,在没有完全信任的情况下运行。就像将应用程序复制到不受信任的网络共享(需要 caspol.exe)或通过 Internet 复制文件(在资源管理器中右键单击文件并单击取消阻止)。
-
@VAndrei 这是一个 winforms 应用程序。您的意思是授予对程序文件夹的访问权限?
-
@hansPassant 这也是我的猜测。但希望有办法打败 IT!