Am o situație neobișnuită în care am nevoie de o lucrare de timer SharePoint pentru a avea atât privilegii de administrator pentru ferestre locale, cât și privilegii SHAREPOINT \ System
SharePoint.
Pot obține privilegii de ferestre prin simpla configurare a serviciului de temporizare pentru a utiliza un cont care este membru al administratorilor locali. Înțeleg că nu este o soluție bună deoarece oferă serviciului de cronometrare SharePoint mai multe drepturi pe care trebuie să le aibă. Dar cel puțin permite jobului timerului SharePoint să ruleze stsadm
.
O altă problemă în ceea ce privește rularea serviciului de temporizare în cadrul administratorului local este că acest utilizator nu va avea neapărat privilegii SHAREPOINT \ System
SharePoint, de care am nevoie, de asemenea, pentru această lucrare SharePoint. Se pare că SPSecurity.RunWithElevatedPrivileges
nu va funcționa în acest caz. Reflectorul arată că RunWithElevatedPrivileges
verifică dacă procesul curent este owstimer
(procesul de serviciu care execută lucrări SharePoint) și nu efectuează nici o altitudine în acest caz (rațional aici, este că serviciul temporizator ar trebui să ruleze în contul windows NT AUTHORITY \ NetworkService , care are privilegii SHAREPOINT \ System
SharePoint și astfel nu este nevoie să ridice privilegiile pentru un cronometru loc de munca).
Singura soluție posibilă aici este să rulați serviciul de timer în cadrul contului său obișnuit de rețea NetworkService și să rulați stsadm ca administrator local, stocând acreditările administratorului undeva și trecându-le la System.Diagnostics.Process.Run() prin numele de utilizator StarInfo , domeniu și parolă.
Se pare că totul ar trebui să funcționeze acum, dar aici este o altă problemă cu care mă blochez în acest moment. Stsamd nu reușește cu următorul pop-up de eroare (!) (Fișierul Winternals arată că stsadm se execută sub administratorul în acest caz):
The application failed to initialize properly (0x0c0000142).
Click OK to terminate the application.
Event Viewer nu înregistrează nimic decât fereastra pop-up.
Utilizatorul de administrator local este contul meu și când rulez doar stsadm
interactiv sub acest cont, totul este ok. De asemenea, funcționează bine atunci când configurez serviciul temporizator pentru a rula în acest cont.
Orice sugestii sunt apreciate :)