更新:2007 年 11 月
对于应用程序域,授予的权限集就是允许的权限集。
对于程序集,公共语言运行库在程序集加载时考虑其他因素来确定授予的权限集。程序集可以包含声明式安全请求,这些请求指定代码需要或想要拥有的权限。下表描述代码可以请求的权限集。
权限集 |
说明 |
---|---|
必需 |
指定代码要想运行则必须拥有的最小权限集。 |
可选 |
标识除最小权限集外,代码还想拥有的权限。这会导致隐式拒绝未在最小权限集中或可选权限集中标识的所有权限。 |
拒绝 |
指定永远不应授予代码的权限。 |
如果所有这三个权限请求都不存在,则只将策略允许的权限集授予程序集。但是,如果这三个权限请求中至少有一个存在,则运行库按照下面的步骤考虑请求的权限:
运行库为程序集计算允许的权限,确保程序集拥有执行的权限。如果执行权限不存在,则运行库会引发 PolicyException,并且不允许代码运行。
运行库确定必选权限集是否为允许的权限集的子集。如果不是,则运行库会引发 PolicyException,并且不允许代码运行。
运行库求出可选的请求的权限与允许的权限集的交集。如果未请求可选权限,则认为可选 PermissionSet 是 FullTrust。
运行库将步骤 3 的结果与请求的最小权限合并。
最后,运行库减去由步骤 4 的结果所拒绝的任何权限。