WSS상에서 프로그래밍을 하다가 보면 메서드단위의 권한 설정때문에 짜증이 나는경우가 있습니다..-.-
그럴때 써줄수 있는것이 권한승격인데요.
(짜증난다는 이유로 권한승격은 잘못된 선택입니다. 웹파트나 워크플로나 추가기능의 실행시에 관리자 권한이 아니면 실행이 안되는 상황에만 써야 합니다.)
표준적으로는 아래의 것을 사용합니다.
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// 여기에 관리자 권한으로 실행해야 할 코드를 기술합니다.
});
예)
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(web.Site.ID))
{
// "system account"계정으로 코드를 실행합니다.
site.RootWeb.Name = "이름바꾸기";
}
});
또는 저는 가끔씩 이것도 사용하죠...
SPSite sps = null;
SPSite spsimp = null;
SPWeb spw = null;
sps = SPControl.GetContextSite(System.Web.HttpContext.Current);
SPUser systemAccount = sps.SystemAccount; //시스템 계정의 SPUser오브젝트를 취득해서
SPUserToken token = systemAccount.UserToken; //시스템계정의 UserToken을 취득해서
spsimp = new SPSite(sps.ID, token); //관리자 권한으로 SPSite를 인스턴스화
spw = spsimp.RootWeb;