问题 从网络共享运行“部分受信任的”.NET程序集


当我尝试运行.NET程序集时(boo.exe)从网络共享(映射到驱动器),它失败,因为它只是部分信任:

Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers.
   at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
   at BooCommandLine..ctor()
   at Program..ctor()
   at ProgramModule.Main(String[] argv)
The action that failed was:
LinkDemand
The assembly or AppDomain that failed was:
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///H:/boo-svn/bin/boo.exe

随着指示 一篇博文,我向.NET配置添加了一个完全信任所有程序集的策略 file:///H:/* 作为他们的URL。我通过输入URL验证了这一点 file:///H:/boo-svn/bin/boo.exe 进入 评估大会 .NET配置中的工具,并注意到boo.exe具有 无限制 许可(政策之前没有)。

即使获得许可, boo.exe 不运行。我仍然得到相同的错误消息。

我该怎么做来调试这个问题?是否有另一种方法可以从网络共享运行“部分受信任”的程序集,而无需为我想要运行的每个程序集更改某些内容?


4680
2017-08-23 18:33


起源



答案:


在.NET 3.5 SP1中,从UNC共享运行的.NET程序集具有完全权限。

见布拉德艾布拉姆斯的 允许.exes运行网络共享 解决方法和讨论,最后是后续工作 .NET 3.5 SP1允许从网络共享启动托管代码


5
2017-08-23 18:42



这显然不适用于Windows 7 - Juan Zamudio
有趣。 Windows 7锁定的可执行文件可能通过网络共享,托管或本机运行。 - Judah Himango


答案:


在.NET 3.5 SP1中,从UNC共享运行的.NET程序集具有完全权限。

见布拉德艾布拉姆斯的 允许.exes运行网络共享 解决方法和讨论,最后是后续工作 .NET 3.5 SP1允许从网络共享启动托管代码


5
2017-08-23 18:42



这显然不适用于Windows 7 - Juan Zamudio
有趣。 Windows 7锁定的可执行文件可能通过网络共享,托管或本机运行。 - Judah Himango


我通过使用解决了这个问题 caspol 按照约翰尼休斯的博客文章的指示 从网络共享运行.Net应用程序

caspol -addgroup 1.2 -url file:///H:/* FullTrust

似乎用于管理策略的.NET配置GUI根本不起作用。


3
2017-08-25 16:48





看一下'caspol.exe'程序(随.NET运行时提供)。您必须在尝试运行应用程序的计算机上执行此操作。我无法“标记”和组装(可能只是我)。但是,使用caspol并为我的应用程序LocalIntranet_Zone设置适当的权限,修复了我的类似问题。

我听说过(但还没有尝试过),.NET 3.5 sp1删除了这个严格的安全要求(默认情况下不允许.NET程序集驻留在共享上)。


2
2017-08-23 18:50





我想你想添加 AllowPartiallyTrustedCallers 属于你的程序集。该错误消息暗示调用您的boo.exe程序集的某些内容不完全受信任,并且boo.exe没有此属性允许它。


0
2017-08-23 18:45