У меня необычная ситуация, когда мне нужно задание таймера SharePoint, чтобы иметь права доступа к локальному администратору и иметь SHAREPOINT\System
привилегии SharePoint.Sharepoint: выполнение stsadm из задания таймера + SHAREPOINT Системные права
Я могу получить привилегии Windows, просто настроив службу таймера на использование учетной записи, которая является членом местных администраторов. Я понимаю, что это не очень хорошее решение, поскольку оно предоставляет SharePoint-таймер больше прав, чем предполагалось. Но это по меньшей мере позволяет выполнять мое задание таймера SharePoint stsadm
.
Еще одна проблема с запуском службы таймера под локальным администратором заключается в том, что у этого пользователя необязательно есть SHAREPOINT\System
привилегии SharePoint, которые также необходимы для этой работы SharePoint. Оказывается, что SPSecurity.RunWithElevatedPrivileges
не будет работать в этом случае. Отражатель показывает, что RunWithElevatedPrivileges
проверяет, является ли текущий процесс owstimer
(сервисный процесс, который запускает задания SharePoint) и не выполняет возвышения в этом случае (рациональное здесь, я думаю, заключается в том, что служба таймера должна работать под учетными записями Windows, которые который имеет SHAREPOINT\System
привилегии SharePoint, и, следовательно, нет необходимости повышать привилегии для задания таймера).
Единственное возможное решение, похоже, заключается в том, чтобы запустить службу таймера под своей обычной учетной записью Windows NetworkService и запустить stsadm в качестве локального администратора, где-то хранят учетные данные администратора и передают их в System.Diagnostics.Process.Run() через имя, домен и пароль StarInfo.
Кажется, все должно работать сейчас, но вот еще одна проблема, с которой я сейчас застрял. Stsamd не удается с помощью следующего всплывающего окна ошибки (Winternals Филемон показывает, что Stsadm работает под управлением администратора в данном случае) (!):
The application failed to initialize properly (0x0c0000142).
Click OK to terminate the application.
Просмотр событий не регистрирует ничего, кроме всплывающих окон.
Локальный администратор - это моя учетная запись, и когда я просто запускаю stsadm
в интерактивном режиме под этой учетной записью, все в порядке. Он также отлично работает, когда я настраиваю службу таймера для запуска в этой учетной записи.
Любые предложения приветствуются :)