Mam nietypową sytuację, w której potrzebuję zadania timera SharePoint, aby mieć uprawnienia lokalnego administratora Windows i mieć uprawnienia SharePoint z SHAREPOINT\System
.SharePoint: wykonywanie stsadm z zadania timera + SHAREPOINT System rights
Mogę uzyskać uprawnienia do systemu Windows, po prostu konfigurując usługę licznika czasu do korzystania z konta będącego członkiem lokalnych administratorów. Rozumiem, że nie jest to dobre rozwiązanie, ponieważ zapewnia usługę zegara SharePoint więcej praw niż powinien. Ale przynajmniej pozwala, aby moje zadanie timera SharePoint działało stsadm
.
Kolejnym problemem związanym z uruchomieniem usługi licznika czasu przez administratora lokalnego jest to, że ten użytkownik niekoniecznie będzie mieć uprawnienia SharePoint, które również są wymagane dla tego zadania programu SharePoint. Okazuje się, że SPSecurity.RunWithElevatedPrivileges
nie zadziała w tym przypadku. Odbłyśnik pokazuje, że bieżący proces to owstimer
(proces serwisowy, który uruchamia zadania SharePoint) i nie wykonuje tego podniesienia (racjonalne tutaj, jak sądzę, jest to, że usługa zegara ma działać pod kontem Windows NT AUTHORITY\NetworkService
który ma uprawnienia SharePoint, a zatem nie ma potrzeby podwyższania uprawnień dla zadania timera).
Jedynym możliwym rozwiązaniem wydaje się być uruchomienie usługi timera na zwykłym koncie Windows NetworkService i uruchomienie stsadm jako lokalnego administratora poprzez przechowywanie poświadczeń administratora i przekazywanie ich do System.Diagnostics.Process.Run() poprzez nazwę użytkownika StarInfo, domenę i hasło.
Wygląda na to, że wszystko powinno działać już teraz, ale tutaj jest inny problem, na który w tej chwili utknąłem. Stsamd się niepowodzeniem z następującym popup błędu (Winternals Filemon pokazuje, że stsadm pracuje pod administratora w tym przypadku) (!):
The application failed to initialize properly (0x0c0000142).
Click OK to terminate the application.
Podgląd zdarzeń rejestruje nic poza popup.
Użytkownik lokalnego administratora jest moim kontem i po uruchomieniu interaktywnie pod tym kontem wszystko jest w porządku. Działa również dobrze, gdy skonfiguruję usługę timera, aby działała pod tym kontem.
Wszelkie sugestie są mile widziane :)