SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Sharepoint Webpart Impersonation

Geprüfte Antwort Dieser Beitrag hat 4 Antworten

Ohne Rang
24 Beiträge
Max Melcher erstellt 18 Aug. 2010 18:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ich möchte aus einem Webpart einen Prozess starten der Dtexec aufruft. Leider funktioniert das nur wenn der aktuell angemeldete Benutzer in der Admin-Gruppe des Servers ist.

Jetzt ist die Frage, wie kann ich den Prozess elevaten und das im Webpart.

 

Code-Beispiel:

 using (Process p = new Process())
                {
                    // Redirect the output stream of the child process.

                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.RedirectStandardOutput = true;

p.StartInfo.FileName = @"D:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe";
p.StartInfo.Arguments = @"/F D:\Projects\InterviewExport.dtsx /SET \Package.Variables[User::UserName].Value;" + "\"" + username + "\"";

}

Jetzt bekomme ich als nicht Admin den Fehler "could not load the package" - als Admin oder als User direkt über die cmd gehts.

Ich habe auch versucht "whoami" über den Prozess zu starten - als Admin bekomme ich da die SharePoint-Admin Kennung, als nicht-Admin ist der Return-Wert "" -.-

Irgend eine Idee?

Grüße

Max

 

 

Alle Antworten

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 18 Aug. 2010 21:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schau mal hier:

http://www.microsoft.com/germany/msdn/solve/codeclips/library.aspx?id=msdn_de_14265

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

RunWithElevatedPrivileges kannst du eine Methode im Context des Application Pool Accounts ausführen.

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 19 Aug. 2010 08:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eine noch bessere Möglichkeit wäre es über einen WCF Service zu realisieren, um so die Ausführungen im Context des Services auszuführen. Auch dazu gibt es unter MSDN-SOLVE / Security informationen.

Ohne Rang
24 Beiträge
Max Melcher Als Antwort am 19 Aug. 2010 21:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habs jetzt via sql xp_cmdshell gelößt - musste schnell gehen :)

Ich habs nich probiert, aber ElevatedPrivileges müsste sich nur auf SharePoint beziehen, also SPWeb, SPSite und nicht auf OS-Ebene, oder? Würde mich zumindest wundern.

WCF wäre natürlich gut, aber dafür müsste ich dann noch ein Programm schreiben, das WCF anbietet und als Wrapper für Dcexec läuft - zu viel Arbeit für "muss gleich funktionieren" ;)

 

Danke für deine Antworten.

Grüße

Max

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 20 Aug. 2010 08:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Max Melcher"]

Ich habs nich probiert, aber ElevatedPrivileges müsste sich nur auf SharePoint beziehen, also SPWeb, SPSite und nicht auf OS-Ebene, oder? Würde mich zumindest wundern.

[/quote]

Du führst die Aktion dann im Context des ApplicationPoolAccounts der Webanwendung (Impersonation AppPoolAccount) aus dh. das was der Account kann im OS, kann dementsprechend ausgeführt werden. (Dateiberechtigungen / Datenbankberechtigungen)