2010-09-16 13 views
1

Pour récupérer des données à partir ActiveDirectory j'ai utilisé le code suivant:Comment modifier les attributs de l'utilisateur (avec les ressources humaines nécessaires) dans ActiveDirectory à partir de SharePoint 2010?

SPSecurity.RunWithElevatedPrivileges(delegate() 
(
      var currentDirectory = new DirectoryEntry(domainAddress); 
)); 

Mais changer la valeur d'une propriété et tenter de mettre à jour les valeurs dans ActiveDirectory (fonction CommitChanges()) génère System.UnauthorizedAccessException Message = Access is denid, car l'exécution de code exécuté sous la NetworkService compte. J'ai essayé d'utiliser le code suivant pour exécuter de l'utilisateur actuel:

using (WindowsIdentity.GetCurrent().Impersonate()) 
{ 
      DirectoryEntry entry = new DirectoryEntry(domainAddress); 
      ... 
} 

Pour exécuter le code de l'utilisateur actuel, mais l'utilisation continue est générée DirectoryServicesCOMException, alors que l'authentification des utilisateurs est un protocole NTLM. Demander s'il vous plaît, comment est-il possible de changer les attributs des utilisateurs dans ActiveDirectory de l'utilisateur actuel sans nécessiter de mot de passe?

Répondre

1

RunWithElevatedPrivileges utilise l'identité du pool d'applications IIS dans lequel SharePoint est en cours d'exécution. Si vous n'avez pas spécifié de compte Active Directory, mais qu'il est configuré pour fonctionner sous le compte de service réseau intégré, vous recevrez ce message.