![]() |
---|
在 .NET Framework 4 版中,公共语言运行时 (CLR) 不再为计算机提供安全策略。Microsoft 建议使用 Windows 软件限制策略替代 CLR 安全策略。此主题中的信息适用于 .NET Framework 3.5 和更低版本,不适用于 4 和更高版本。有关此更改和其他更改的更多信息,请参见 .NET Framework 4 中的安全性更改。 |
公共语言运行时通过遍历相关策略级别的代码组层次结构来计算应用程序域和程序集允许的权限集。 对于应用程序域,相关的策略级别是企业、计算机和用户三种级别。 对于程序集,相关的策略级别是企业、计算机、用户和应用程序域四种级别。
运行时按照下面的步骤来计算允许的权限集:
对于每个相关的策略级别,运行时均使用证据提供的标识信息来确定代码所属的组。 如果代码是一个组的成员,就称该组为匹配项。
搜索匹配项的过程从“所有代码”组中代码组层次结构的顶部开始。 运行时在层次结构中的各个级别进行搜索(如果在某父组中发现了匹配项,则也在子组中进行搜索)。
标识层次结构中的所有匹配项后,与每个匹配的代码组关联的权限以累加形式组合在一起(联合),从而生成该策略级别允许的权限集。
如果对代码组应用了 Exclusive 或 LevelFinal 特性,则运行时采用不同的方式计算允许的权限集。 有关详细信息,请参见代码组特性。
然后,运行时重复层次结构搜索,并求出各个策略级别的权限集的交集,来计算应用程序域或程序集允许的权限集。 得到的权限集只包含所有策略级别都允许的权限。
下图显示一个代码组层次结构,Microsoft® Money 在该结构中是以下四个代码组的成员:所有代码、Microsoft(发行者)、本地 Internet(区域)和 Microsoft Money(名称)。 给定策略级别(计算机、用户或应用程序域)允许的权限集,是这些代码组中的每个代码组所关联的命名权限集的累加组合(联合)。
代码组层次结构