gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:03:47 24 4
gpt4 key购买 nike

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

我在企业级别创建了一个新的代码组,它将匹配具有特定数字签名的任何程序集。代码组已设置为仅使用关联权限集中的权限,并且不会评估较低的策略级别。

运行 .Net 2.0 PermCalc 表明我的应用程序需要以下权限:

  • 非托管代码,
  • 环境
  • 文件输入输出
  • 注册表
  • 反射(reflection)

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

我的应用程序中的第一个方法需要预先获得上述所有权限,以便我可以在退出前向用户显示一条明智的消息。

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

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

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

谁能解释一下为什么会这样。

注意:我的最终目标是确保我的应用程序在从网络共享执行时不会严重崩溃。我本来想检查程序集证据区域是 My_Computer,但我不能再使用 .NET 3.5 SP1 执行此操作。参见 FullTrust On the LocalIntranet

在此先感谢您的任何帮助/建议。

最佳答案

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

另一种可能是您的“提前检查”要求放错了地方。是直接在应用程序的 Main 方法中吗?如果是这样,当需求运行时,调用堆栈上将不会有任何应用程序代码经过验证。如果这是问题所在,只需将需求转移到从 Main 调用的另一个方法中,就应该允许需求失败。

关于c# - 为什么 CASPol 允许我的 .NET 应用程序运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com