如何:让部分受信任的代码无法访问 APTCA 程序集

更新:2007 年 11 月

AllowPartiallyTrustedCallersAttribute (APTCA) 属性可使部分受信任的代码能够访问签名程序集中完全受信任的代码。将 APTCA 属性应用于某个程序集时,它会将该程序集标记为在该程序集的生存期内允许部分受信任的调用方访问。安装了程序集后,如果程序集将受保护的资源公开给部分受信任的代码,便可能存在安全漏洞。若要纠正此问题,可以设置一个注册表值,以指示应忽略该程序集的 APTCA 属性。

重要说明:

能否从程序集中移除部分受信任的代码将取决于注册表项,如以下过程所述。如果执行应用程序时使用的帐户不具有访问该注册表项的访问控制列表 (ACL) 权限,该设置将无效,从而部分受信任的调用方将能够访问程序集。这会导致特权出现意外提升。必须确保配置此注册表项的 ACL 权限,以使所有程序集都能读取此项。

从程序集中移除部分信任

  1. 在系统注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Policy\APTCA 项下创建一个项。使用的项名称应包含程序集的强名称信息。此名称还应包括程序集的简单名称、版本号、区域性(可以是非特定区域性)、公钥标记以及文件版本。例如,下面是一个有效的项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Policy\APTCA\Microsoft.Office.Interop.Visio, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, FileVersion=11.0.3216.0。

  2. 用名称 APTCA_FLAG 和值 1 创建一个 DWORD 值,以从该程序集中移除部分信任可见性。