Montag, 26. Januar 2015

Passwort eines (lokalen) Windows Benutzerkontos ändern

In diesem Post möchte ich zeigen, wie man das Passwort eines Windows Benutzers per C# ändert.
Hierfür gibt es mehrere Möglichkeiten, wir benutzen hier die Klasse PrincipalContext.
Bei dieser, aber auch bei allen anderen Methoden, ist es bei Windows 8 wichtig, dass der Kontentyp des Zielbenutzers auf lokal gestellt ist (kann geändert werden), und nicht auf Windows Konto.
Im Projekt fügen wir dann per Projekt - Verweis hinzufügen eine Referenz auf die Assembly System.DirectoryServices.AccountManagement hinzu, und mit folgendem kurzen Code lässt sich das Passwort eines Benutzers ändern:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.DirectoryServices.AccountManagement;

namespace ChangePW
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
                var Context = new PrincipalContext(ContextType.Machine);
                var User = UserPrincipal.FindByIdentity(Context, IdentityType.SamAccountName, username);
                User.ChangePassword(oldPassword, newPassword);
        }
    }
}

Wie man sehen kann, erstellen wir zuerst ein PrincipalContext Objekt. ContextType.Machine gibt an, dass wir auf den aktuellen Computer zugreifen möchten. Dann suchen wir uns von diesem den gewünschten Benutzer heraus, und ändern dessen Passwort.

Keine Kommentare:

Kommentar veröffentlichen