![]() |
---|
在 .NET Framework 4 版中,公共语言运行时 (CLR) 不再为计算机提供安全策略。Microsoft 建议使用 Windows 软件限制策略替代 CLR 安全策略。此主题中的信息适用于 .NET Framework 3.5 和更低版本,不适用于 4 和更高版本。有关此更改和其他更改的更多信息,请参见 .NET Framework 4 中的安全性更改。 |
对于应用程序域,授予的权限集就是允许的权限集。
对于程序集,公共语言运行时在程序集加载时考虑其他因素来确定授予的权限集。 程序集可以包含声明式安全请求,这些请求指定代码需要或想要拥有的权限。 下表描述代码可以请求的权限集。
权限集 |
说明 |
---|---|
必需 |
指定代码要想运行则必须拥有的最小权限集。 |
可选 |
标识除最小权限集外,代码还想拥有的权限。 这会导致隐式拒绝未在最小权限集中或可选权限集中标识的所有权限。 |
拒绝 |
指定永远不应授予代码的权限。 |
如果所有这三个权限请求都不存在,则只将策略允许的权限集授予程序集。 但是,如果这三个权限请求中至少有一个存在,则运行时按照下面的步骤考虑请求的权限:
运行时为程序集计算允许的权限,确保程序集拥有执行的权限。 如果执行权限不存在,则运行时会引发 PolicyException,并且不允许代码运行。
运行时确定必选权限集是否为允许的权限集的子集。 如果不是,则运行时会引发 PolicyException,并且不允许代码运行。
运行时求出可选的请求的权限与允许的权限集的交集。 如果未请求可选权限,则认为可选 PermissionSet 是 FullTrust。
运行时将步骤 3 的结果与请求的最小权限合并。
最后,运行时减去由步骤 4 的结果所拒绝的任何权限。