记录一个在SharePoint的代码中提升运行权限的方法
方法: 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的吧.
摘自:
This page is specific to The 2007 product release