Good to Know Database

C#: Windows-Passwort mit einer C#-Konsolenanwendung ändern


Der auf dieser Seite gezeigte C#-Quellcode kann genutzt werden um das Benutzerpasswort auf dem lokalen Windows-System oder auch in einer Windows-Domain zu ändern. Das hier gezeigte Programm mit dem Namen ChangePassword kann von der Eingabeaufforderung aufgerufen werden. Als Argumente müssen Sie beim Aufruf zuerst das aktuelle Passwort und danach das gewünschte zukünftige Passwort angeben.

/*
 * ChangePassword
 *
 * This application can be used to change the password of your local windows
 * account or your domain user account.
 *
 * Creation:    20.12.2013
 * Last Update: 05.01.2014
 *
 * Copyright (c) 2013-2014 by Georg Kainzbauer (http://www.gtkdb.de)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.DirectoryServices;

namespace ChangePassword
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                System.Console.WriteLine("\nChangePassword v1.0");
                System.Console.WriteLine("Copyright (c) 2013-2014 by Georg Kainzbauer (http://www.gtkdb.de)");
                System.Console.WriteLine("\nUsage: ChangePassword.exe <OldPassword> <NewPassword>");
                System.Environment.Exit(1);
            }

            string domain = Environment.UserDomainName;
            string username = Environment.UserName;
            string oldPassword = args[0];
            string newPassword = args[1];

            System.Console.WriteLine("Domain:       " + domain);
            System.Console.WriteLine("Username:     " + username);
            System.Console.WriteLine("Old Password: " + oldPassword);
            System.Console.WriteLine("New Password: " + newPassword);

            DirectoryEntry entry = null;
            try
            {
                entry = new DirectoryEntry(@"WinNT://" + domain + "/" + username + ",User");
            }
            catch (System.Reflection.TargetInvocationException exception)
            {
                Exception cause = exception.InnerException;
                System.Console.WriteLine("\nERROR: " + cause.Message);
                System.Environment.Exit(1);
            }

            ChangePassword(entry, oldPassword, newPassword);

            System.Console.WriteLine("\nPassword has changed successfully.");
        }

        static void ChangePassword(DirectoryEntry entry, string oldPassword, string newPassword)
        {
            try
            {
                entry.Invoke("ChangePassword", oldPassword, newPassword);
            }
            catch (System.Reflection.TargetInvocationException exception)
            {
                Exception cause = exception.InnerException;
                System.Console.WriteLine("\nERROR: " + cause.Message);
                System.Environment.Exit(1);
            }
        }
    }
}

Den hier gezeigten C#-Quellcode können Sie zum Beispiel mit Microsoft Visual Studio Express 2013 kompilieren.

Weiterführende Tutorials

Visual Studio 2013: Verweise auf Assemblys zum Projekt hinzufügen


Dieser Eintrag wurde am 02.01.2014 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_38_2470.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer