首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么CASPol允许我的.NET应用程序运行?

为什么CASPol允许我的.NET应用程序运行?
EN

Stack Overflow用户
提问于 2011-07-25 10:22:06
回答 2查看 947关注 0票数 3

我很想知道,当我限制分配给程序集的权限时,为什么允许我的2.0 .net应用程序执行。

我已经在企业级创建了一个新的代码组,它将与任何具有特定数字签名的程序集相匹配。已设置代码组,以便只使用来自关联权限集的权限,并且不会计算较低的策略级别。

运行.Net 2.0 PermCalc时指出,我的应用程序需要以下权限:

  • UnmanagedCode,
  • 环境
  • FileIO
  • 注册表
  • 反射

我已经为我的自定义代码组分配了非托管代码的权限,但没有其他权限。

我的应用程序中的第一种方法要求预先拥有所有上述权限,这样我就可以在退出之前向用户显示一条合理的消息。

在我的程序集上运行.NET 2.0配置“评估程序集”工具确实表明,我的应用程序将只获得UnmanagedCode权限。

但是,当我执行我的应用程序是运行和完成时,很明显,执行各种FileIO和注册表操作。

我的应用程序用数字签名进行签名,该签名应该与受限代码组相匹配。

有谁能解释一下为什么。

注意:我的最终目标是确保如果从网络共享中执行,我的应用程序不会崩溃。我本来希望检查程序集证据区域是My_Computer,但是我不能再用.NET 3.5 SP1进行检查了。请参阅FullTrust On LocalIntranet

提前感谢您的帮助/建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-25 12:54:30

如果您正确配置了CAS策略,那么您的应用程序很可能不会被拒绝您所期望的权限,因为它不是在您配置的策略CLR下运行的。您是否在同一台计算机上安装了32位和64位CLR?

另一种可能是,您的“早期检查”需求在错误的地方。它是否直接出现在应用程序的主要方法中?如果是这样的话,当需求运行时,调用堆栈上不会有任何经过验证的应用程序代码。如果这是问题所在,只需将需求移动到另一个从Main调用的方法,就会导致需求失败。

票数 2
EN

Stack Overflow用户

发布于 2011-07-25 10:35:51

您仍然可以在.NET 3.5 SP1 - http://msdn.microsoft.com/en-us/library/system.security.policy.zone.aspx中检查程序集证据区域。

有关caspol允许您的程序集的内容,请参阅http://msdn.microsoft.com/en-us/library/tx1dts55.aspx

这个http://blogs.msdn.com/b/brada/archive/2007/10/26/adhoc-poll-allowing-net-exes-to-run-off-a-network-share.aspx可能会影响你看到的..。

编辑:

为了检查何时从网络共享运行,您仍然可以获得Assembly.GetExecutingAssembly().Location,然后通过DriveType检查它是UNC还是netowrk驱动器,用于您的位置System.IO.DriveInfo[] (即System.IO.DriveType.Network)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6814661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档