从本地控制台应用程序从C ++ / CLI DLL调用C#库时,无法授予最小权限请求

时间:2012-02-13 23:14:45

标签: c# .net c++-cli

此问题紧随Assembly does not allow partially trusted callers when using a custom resolver

感谢该问题的解决方案,我现在可以从本地控制台应用程序调用网络共享上的C#库(不更改CasPol)

我现在需要采取下一步,即从另一个与C#Library位于网络上相同文件夹中的混合C ++ / CLI DLL调用C#库。 C ++ / CLI DLL将由本地控制台应用程序调用。

我正在使用与上述问题相同的自定义处理程序(即有证据),当从本地控制台应用程序调用C#库时,该处理程序有效。

从本地控制台应用程序调用C ++ / CLI库时,出现以下异常:

  

无法加载文件或程序集'MyCplusplusCLILib,Version = 0.0.0.0,   Culture = neutral,PublicKeyToken = null'或其依赖项之一。   无法授予最低权限请求。 (HRESULT的例外情况:   0x80131417)

如果我完全信任网络位置它可以正常工作但是我不明白为什么我需要授予这种信任时,根据3.5 SP1中的更改​​,Intranet不再需要FullTrust应用于它(所有库都编译为Visual Studio选项中的.NET 3.5)

2 个答案:

答案 0 :(得分:6)

获取FullTrust的情况列在this blog post的底部:

  1. 启动.exe的共享子目录加载的程序集
  2. 从启动主.exe以外的共享加载的程序集
  3. 在LegacyMyComputer注册表值设置为1
  4. 的计算机上加载的任何程序集
  5. 加载到CLR主机中的任何程序集,包括作为控件加载到Internet Explorer中的程序集。
  6. 从“真正的”MyComputer区域启动的应用程序从共享加载的任何程序集。
  7. 听起来你的情况是5号。将.exe复制到同一网络目录将是一种解决方法。

答案 1 :(得分:0)

我遇到了DLL权限问题。由于安全/信任问题,从Internet下载的DLL文件在Windows中被阻止。在代码的任何部分可以使用这些依赖项之前,都需要手动解除阻止它们。

To unblock:
 Go to properties & click the "unblock" button and the problem may be solved.

enter image description here