auf einer Vista-dev Maschine, die ich diesen Code verwenden erfolgreich Benutzer „Administrator“, um das Passwort zu ändern:Directory Passwort ändern: Unterschiedliches Verhalten zwischen Vista/Server2008
directoryEntry.Invoke("SetPassword", "new");
Als ich es bewegte über Maschine meines Server 2008 dev dieser Code hat nicht funktioniert, und ich wurde gezwungen, den folgenden Code zu verwenden:
directoryEntry.Invoke("ChangePassword", new object[] { "old", "new" });
Meine Frage ist, warum?
In beiden Fällen habe ich meine Directory Objekt als solches:
DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("WinNT://{0}/{1}", computerName, username));
Dank! 8)
Für den Fall, dass Sie es hilfreich finden, ist es der eigentliche Code.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.DirectoryServices;
using System.Security.Principal;
namespace AccountMod
{
class Program
{
static void Main()
{
Console.WriteLine("Attempting reset...\n");
try
{
String machineNameAndUser = WindowsIdentity.GetCurrent().Name.ToString();
String machineName = WindowsIdentity.GetCurrent().Name.ToString().Substring(0, machineNameAndUser.IndexOf('\\'));
Console.WriteLine("Computer's name: " + machineName);
ResetPassword(machineName, "Administrator", "new");
//ChangePassword("Administrator", "current", "new"); Console.WriteLine("Finished...");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
Console.WriteLine(e.InnerException);
}
Console.ReadKey();
}
public static void ResetPassword(string computerName, string username, string newPassword)
{
DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("WinNT://{0}/{1}", computerName, username));
directoryEntry.Invoke("SetPassword", newPassword);
//directoryEntry.Invoke("ChangePassword", new object[] { "current", "new" });
}
}
}
Alle Details, wie Sie wussten, dass es fehlgeschlagen - dh gab es eine Ausnahme? –
Oh, und wenn es eine Ausnahme gab, könnten Sie bitte die gesamte Ausnahme posten? Das heißt, posten Sie die vollständige Ausgabe von ex.ToString(). –
Keine Ausnahmen. :( – sholsapp