2010-04-08 2 views

Répondre

3

utilisant .net 3.5:

PrincipalContext context = new PrincipalContext(ContextType.Domain); 
UserPrincipal user = UserPrincipal.FindByIdentity(context, "user"); 

L'utilisateur peut changer son propre mot de passe:

user.ChangePassword("old", "new"); 

Ou, si vous exécutez en tant qu'administrateur AD, vous pouvez le réinitialiser:

user.SetPassword("1234567"); 
+0

Je pense que l'OP veut changer les mots de passe pour les utilisateurs non-domaine sur une machine distante. –

+0

Dans ce cas, je crois que 'ContextType.Machine' devrait fonctionner. Pas tout à fait sûr, jamais traité avec les utilisateurs locaux. Merci. – Kobi

+0

Oui, je cherche un moyen de modifier les utilisateurs locaux (c'est-à-dire non-domaine). Je vais essayer ContextType.Machine, mais comment vais-je dire quelle machine à utiliser? –

2

Oui,

Cela pourrait ork avec .net 3.5 et supérieur, mais il nécessite le service serveur (c.-à-d. partage de fichiers) être activé et en cours d'exécution. Et si ce n'est pas ???

Je voudrais simplement préférer le bon vieux, beau, préfet et garanti la syntaxe ADSI droit du cœur d'un ensemble VB.Net (qui fonctionne comme un charme BTW) ... Exemple:

Dim uName as string = "trgtUser" 
Dim uPass as string = "newPass" 
Dim user = GetObject("WinNT://./" & uName & ",user") 
user.SetPassword(uPass) 

Ce est tout ce qu'il y a à définir des mots de passe sur la machine locale !!

have fun;)

+0

et il ne nécessite pas System.DirectoryServices. – MK4L

+0

Cool. Je dois essayer ça. –