记录一个在SharePoint的代码中提升运行权限的方法

时间:2022-01-23 14:58:35

方法: SPSecurity.RunWithElevatedPrivileges

命名空间: Microsoft.SharePoint
程序集: Microsoft.SharePoint (in microsoft.sharepoint.dll)

 

使用方法:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(web.Site.ID))
    {
        // implementation details omitted
    }
});

注意:

你必须在delegate的内部创建新的SPSite对象, 因为外面创建的SPSite对象即使你在delegate内部引用, 它还是没有完全控制的权限的. 使用using关键字来保证SPSite对象在delegate内部被析构掉.

 

另外, 该方法的行为是将当前账户提升为IIS的application pool的账户, 即web应用程序的管理员账户, 从而获得完全控制权限的.

 

原文出处有更详细的例子.

 

补充

=======

这个方法与ASP.NET的impersonate有什么不同呢?

嗯, 后者要么要动web.config, 要么就需要在代码中hard code下来你要使用的用户名和密码. 相对于SharePoint Object Model提供的这个方法来说, 缺点还是比较明显的. 所以在SharePoint中, 要用还是用OM的吧.

 

摘自:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx

This page is specific to The 2007 product release