WSSプロモーションコード実行権限
概要:
WSSは、デフォルトでは現在ログインしているユーザーを使用して、コードAccess Webパーツやカスタムアプリケーションを実行するコードを実行するために偽装を使用します。ほとんどの場合、このメカニズムは正確かつ厳密に標準ユーザーのアクセス許可に私たちが達成したい目標であり、特定のWebサイトのリソースや機密データへの彼のアクセスを制御することができます。
時には、しかし、いくつかの特別なシーンで、あなたのコードは、要求者は、ユーザーの特権ではない場合でも、一定の方法が制限WSSターゲットを実行する必要があります。したがって、この場合には、我々はコードを実行する権限を一般ユーザを昇格する必要があります。
方法:
SPSecurity.RunWithElevatedPrivileges(デリゲート()
{
実行に昇格されたアクセス許可が必要です//コード
});
事例:
サイトコレクションの所有者の名前を取得しますSPSite.Owner.Name
デフォルトでは、SPSite.Owner.Nameを実行するために一般のユーザーに昇格された特権でコードを実行しない場合、システムがエラーを報告し、「アクセスが拒否されました」管理者権限を取得することができ、ユーザのニーズのサイトコレクションです。
ただし、以下のコードが実行され、私たちの通常のユーザー権限は、成功しSPSite.Owner.Nameへのアクセスを得ることができます
SPSiteオブジェクトsiteColl = SPContext.Current.Site。
SPWebサイト= SPContext.Current.Web。
SPSecurity.RunWithElevatedPrivileges(デリゲート(){
使用(のSPSite ElevatedsiteColl =新規のSPSite(siteColl.ID)){
使用(SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID))
{
//ファイル名を指定して実行SHAREPOINTとして「システムアカウントシステムアカウントID
文字列SiteCollectionOwner = ElevatedsiteColl.Owner.Name。
}
}
});
注意:
これらのオブジェクトが作成され、現在のユーザーのセキュリティコンテキストに基づいているため、コード内で昇格した権限を使用してSPSecurity.RunWithElevatedPrivileges、SPSiteオブジェクト、SPWebオブジェクト、およびオブジェクトをインスタンス化しなければならないが、Microsoft.SharePoint.SPContext.Currentプロパティを取得するために使用することはできません
システムは自動的に廃棄し、リソースの完全な解放を行うことができるように、オブジェクトのインスタンスを作成使用して使用してください。
前述したこの方法は、もちろん、我々はまた、コードを実行するアカウントを指定することができ、コードを実行するには、最高管理者アカウントの完全な権限:
SPSiteオブジェクトsiteColl = SPContext.Current.Site。
SPWebサイト= SPContext.Current.Web。
SPUserのユーザー= [ "は、Litware \ケン" @] site.Users。
SPUserTokenはUserToken = user.UserToken。
SPSecurity.RunWithElevatedPrivileges(デリゲート(){
使用(のSPSite ElevatedsiteColl =新規のSPSite(siteColl.ID、はUserToken)){
使用(SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID))
{//県の実行」LITWAREする
文字列SiteCollectionOwner = ElevatedsiteColl.Owner.Nameを。
}
}
});
このようにして、その後、コードは関係なく、県当局が高いか低い実行するためには、Litware許可の「県へ。
ます。https://www.cnblogs.com/llbofchina/archive/2008/05/24/1206393.htmlで再現