Freigeben über


SPSecurity.RunWithElevatedPrivileges-Methode

Führt die angegebene Methode mit Vollzugriff, auch wenn der Benutzer keine andere Vollzugriff verfügen.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
Public Shared Sub RunWithElevatedPrivileges ( _
    secureCode As SPSecurity.CodeToRunElevated _
)
'Usage
Dim secureCode As SPSecurity.CodeToRunElevatedSPSecurity.RunWithElevatedPrivileges(secureCode)
public static void RunWithElevatedPrivileges(
    SPSecurity.CodeToRunElevated secureCode
)

Parameter

  • secureCode
    Typ: Microsoft.SharePoint.SPSecurity.CodeToRunElevated

    Eine Stellvertretung-Methode, die mit erhöhten Rechten ausgeführt werden soll. Diese Methode führt unter die Anwendungspoolidentität, die Website-Auflistung Administratorrechte für alle Websitesammlungen, die von diesen Anwendungspool gehostet hat.

Hinweise

Das Objekt secureCode kann von jeder Methode erstellt werden, parameterlosen ist und voidzurückgegeben. Finden Sie unter SPSecurity.CodeToRunElevated.

Sie können auch umgehen, mit dem SPSecurity.CodeToRunElevated -Konstruktor, indem Sie eine anonyme Methode innerhalb der Aufruf von RunWithElevatedPrivilegesdefinieren.

Wichtig

Wenn secureCode Schreibvorgänge beinhaltet, sollte der Aufruf von RunWithElevatedPrivileges durch einen Aufruf der SPUtility.ValidateFormDigest() oder SPWeb.ValidateFormDigest()vorangestellt werden.

Beispiele

Im ersten Beispiel wird veranschaulicht, RunWithElevatedPrivileges mit dem SPSecurity.CodeToRunElevated -Konstruktor verwendet. In diesem Beispiel wird die GetSitesAndGroups eine parameterlosen Methode, die void zurückgibt und irgendwo definiert ist, die von der Button1_Click -Methode zugegriffen werden kann.

protected void Button1_Click(object sender, EventArgs e)
{
   SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
   SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}

Das nächste Beispiel zeigt die Syntax, die erforderlich sind, um eine anonyme Methode im Aufruf RunWithElevatedPrivilegeszu definieren.

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    // implementation details omitted
});

Ein SPSite -Objekt erstellt, die außerhalb der Stellvertretung kann innerhalb des Delegaten verwiesen werden, jedoch die Methoden und Eigenschaft Prüfer des Objekts ausführen mit den Berechtigungen des der Benutzerkontext, in dem die Objekte erstellt wurden, nicht mit erhöhten Berechtigungen. Übereinstimmenden Zustand gilt für SPWeb -Objekte und alle anderen Objekte. Wenn Sie die Mitglieder der Objekte mit erhöhten Rechten ausführen müssen, müssen Sie neue Objekte innerhalb des Delegaten erstellen. Wenn das neue Objekt dieselbe permanente Entität als außerhalb des Delegaten erstellte Objekt darstellen muss, müssen Sie Identifikationsinformationen aus dem extern erstellte Objekt verweisen und verwenden, um das neue Objekt innerhalb des Delegaten erstellen. Beispielsweise ist web einen Verweis auf ein SPWeb -Objekt vor dem Aufruf von RunWithElevatedPrivilegeserstellt haben, klicken Sie dann der folgende Code zeigt, dass Sie die ID des übergeordneten Objekts SPSite verwenden würden, um ein neues SPSite -Objekt zu erstellen.

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

Innerhalb des Delegaten Elemente des site -Objekts mit erhöhten Rechten ausführen, jedoch Aufrufe von web.Site nicht. Beachten Sie, dass das using -Schlüsselwort verwendet wird, um sicherzustellen, dass das Objekt in der Stellvertretung verworfen wird.

Siehe auch

Referenz

SPSecurity Klasse

SPSecurity-Member

Microsoft.SharePoint-Namespace

Weitere Ressourcen

Elevation of Privilege

Anonymous Methods (C# Programming Guide)