Sharepoint : exécution de stsadm à partir d'un travail du minuteur SHAREPOINTdroits système

J'ai une situation inhabituelle dans laquelle j'ai besoin d'un travail du minuteur SharePoint pour avoir à la fois des privilèges d'administrateur Windows locaux et pour avoir SHAREPOINTSystem privilèges SharePoint.

Je peux obtenir les privilèges Windows en configurant simplement le service de minuterie pour utiliser un compte membre des administrateurs locaux. Je comprends que ce n'est pas une bonne solution car cela donne au service de minuterie SharePoint plus de droits qu'il n'est censé avoir. Mais cela permet au moins à mon travail de minuteur SharePoint d'exécuter stsadm.

Un autre problème avec l'exécution du service de minuterie sous l'administrateur local est que cet utilisateur n'aura pas nécessairement les privilèges SHAREPOINTSystem SharePoint dont j'ai également besoin pour ce travail SharePoint. Il s'avère que SPSecurity.RunWithElevatedPrivileges ne fonctionnera pas dans ce cas. Reflector montre que RunWithElevatedPrivileges vérifie si le processus actuel est owstimer (le processus de service qui exécute les tâches SharePoint) et n'effectue aucune élévation, c'est le cas (le rationnel ici, je suppose, est que le service de minuterie est censé s'exécuter sous un compte Windows NT AUTHORITYNetworkService qui dispose de SHAREPOINTSystem privilèges SharePoint, et qu'il n'est donc pas nécessaire d'élever les privilèges pour un travail de minuterie).

La seule solution possible ici semble être d'exécuter le service de minuterie sous son compte Windows NetworkService habituel et d'exécuter stsadm en tant qu'administrateur local en stockant les informations d'identification de l'administrateur quelque part et en les transmettant à System.Diagnostics.Process.Run() via le nom d'utilisateur, le domaine et le mot de passe de StarInfo.

Il semble que tout devrait fonctionner maintenant, mais voici un autre problème avec lequel je suis bloqué en ce moment. Stsamd échoue avec la fenêtre contextuelle d'erreur suivante (!) (Winternals filemon montre que stsadm s'exécute sous l'administrateur dans ce cas) :

The application failed to initialize properly (0x0c0000142).
Click OK to terminate the application.

L'Observateur d'événements n'enregistre rien sauf la fenêtre contextuelle.

L'utilisateur administrateur local est mon compte et lorsque je lance stsadm de manière interactive sous ce compte, tout va bien. Cela fonctionne également très bien lorsque je configure le service de minuterie pour qu'il s'exécute sous ce compte.

Toute suggestion est appréciée :)

请先 登录 后评论