即使用户并不拥有完全控制,请执行具有完全控制权限的用户指定的方法。
命名空间: Microsoft.SharePoint
程序集: Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)
语法
声明
Public Shared Sub RunWithElevatedPrivileges ( _
secureCode As SPSecurity.CodeToRunElevated _
)
用法
Dim secureCode As SPSecurity.CodeToRunElevatedSPSecurity.RunWithElevatedPrivileges(secureCode)
public static void RunWithElevatedPrivileges(
SPSecurity.CodeToRunElevated secureCode
)
参数
secureCode
类型:Microsoft.SharePoint.SPSecurity.CodeToRunElevated是使用提升的权限运行委托方法。此方法在应用程序池标识,该应用程序池承载的所有网站集具有网站集管理员权限下运行。
备注
可以从任何方法无参数并返回void创建secureCode对象。请参阅SPSecurity.CodeToRunElevated。
您可以跳过通过定义内呼叫到RunWithElevatedPrivileges匿名方法使用SPSecurity.CodeToRunElevated构造函数。
![]() |
---|
如果secureCode包含任何写入操作,对RunWithElevatedPrivileges调用应跟SPUtility.ValidateFormDigest()或SPWeb.ValidateFormDigest()的呼叫。 |
示例
第一个示例显示RunWithElevatedPrivileges与SPSecurity.CodeToRunElevated构造函数一起使用。本示例中, GetSitesAndGroups是无参数方法返回 void 和某一位置定义可访问Button1_Click方法。
protected void Button1_Click(object sender, EventArgs e)
{
SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}
下面的示例演示对RunWithElevatedPrivileges的调用中定义为匿名方法所需的语法。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// implementation details omitted
});
可以在代理引用外委托创建SPSite对象,但是的方法和属性 assessors 对象的运行的用户上下文中创建对象的权限,不使用提升的权限。同一个点适用于SPWeb对象和任何其他对象。如果您需要执行使用提升的权限的对象的成员,您必须创建委托内的新对象。如果新的对象必须代表相同的保留的实体委托之外创建对象,您必须从外部创建的对象引用标识信息并使用它来创建新的对象中的委托。例如,如果web之前对RunWithElevatedPrivileges调用创建SPWeb对象的引用,然后下面的代码显示应使用其父SPSite对象的 ID 来构造一个新的SPSite对象。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(web.Site.ID))
{
// implementation details omitted
}
});
内部代理人, site对象的成员运行使用提升的权限,但web.Site中的成员的呼叫不会。请注意using关键字用于确保在该委托释放该对象。