2009-01-08 55 views
2

我试图从网络共享运行.Net 2.0应用程序而不使用FullTrust权限集。我想创建一个新的权限集,其中只有我的程序集需要的权限,然后将其分配给共享路径上的exe。是否有可能做到这一点? 从我的有限实验中,我发现如果没有FullTrust,我无法从网络共享中获得任何应用程序的工作。我尝试了创建一个新的烫发套装,并尝试了一切和其他烫发套装,但都没有效果。有没有人有这方面的经验?.Net 2.0应用程序从网络共享没有FullTrust

回答

0

在.NET 3.5之前,您需要完全信任共享以从那里运行.NET应用程序。 Shawn解释了这个here:“没有对默认CAS系统进行一些修改,我们处于加载包含安全对象的程序集并授予它们策略的永无止境的循环中......进入FullTrust列表。

在.NET 3.5这一限制是克服“...默认授予FullTrust的设置,使他们采取行动一样,如果他们发动关闭电脑直接的”(肖恩的另一篇文章here

2

您需要使用强名称为您的程序集签名,然后将强名称的cas-policy设置为完全信任。

为FullTrust设置与您的强名称签署的所有代码最简单的方法是:

caspol.exe -q -m -ag MyZone -strong -hex [HexCodeOfYourStrongName] -noname -noversion FullTrust -name MyCode -description "Code trust for my code"'; 

如果您的代码拆分到多个组件,你需要每一个组件与强名称进行签名。您可能需要设置SecurityPermission -Attribute具有链接需求,即调用者接管的安全性。

[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.ControlPrincipal)] 
0

给人强烈的命名assmebly FullTrust权限听起来不错,但不幸的是我的程序集的引用几个第三方COM的Dll这也必须是强名称,如果我强命名的主要组件。我猜测给予FullTrust到Shawn给出的路径是最好的解决方案: CasPol.exe -pp off -m -ag 1.2 -url file:// \ ShawnFa-Srv/Tools/* FullTrust

+0

你也可以用你的强名称命名第三方dll,或者明确地为这些文件设置强壮的选项。这些COM-dll是否需要安装在目标机器上的应用程序? – 2009-01-08 10:43:11

相关问题