Mit Hilfe von C# und WMI kann man auf einfache Weise einen Rechner in eine Windows-Domain heben. Da ich etliche Quellen habe abgrasen müssen, um ein den passenden Weg zu finden, habe ich beschlossen, die Lösung hier im Blog zu veröffentlichen, auch wenn sie eigentlich etwas fachfremd ist und nichts mit Webdesign zu tun hat. Erforderlich für den Domain Join ist nachfolgender Code-Schnipsel:

ManagementObject o = new ManagementObject(String.Format("Win32_ComputerSystem.Name='{0}'", Environment.MachineName));
object[] methodArgs = { "DOMAIN", "PASSWORD", @"DOMAIN\USERNAME", null, 1};

object result = o.InvokeMethod("JoinDomainOrWorkgroup", methodArgs);

Console.WriteLine(String.Format("JoinDomainOrWorkgroup return code: '{0}'", result.ToString()));

Wichtig sind dabei die Optionen, die im Array "methodArgs" angegeben werden. Während die ersten Parameter selbsterklärend sind, ist insbesondere die 1 in obigen Beispiel hervorzuheben. Diese steht dafür, dass das System in die Domain aufgenommen werden soll. Wird stattdessen beispielsweise eine 3 angegeben, dann wird ein Konto im Active Directory erstellt, sofern noch nicht vorhanden. Weiter mögliche Werte sind auf folgender Seite von Microsoft zu finden: http://msdn.microsoft.com/en-us/library/windows/desktop/aa392154(v=vs.85).aspx.

Der angegebene Benutzer muss natürlich die Berechtigung besitzen, den gewünschten Rechner in die Domäne heben zu dürfen. Hat alles funktioniert, dann sollte der Return-Code 0 sein.

Da ich in der offiziellen Dokumentation nichts zu den "Fehler-Returncodes" habe finden können, hier noch ein Übersicht über die Codes, die ich an anderer Stelle entdeckt habe:

0
Success joining computer to the domain!
5
Access is denied
87
The parameter is incorrect
110
The system cannot open the specified object
1323
Unable to update the password
1326
Logon failure: unknown username or bad password
1355
The specified domain either does not exist or could not be contacted
2224
The account already exists
2691
The machine is already joined to the domain
2692
The machine is not currently joined to a domain

Neuen Kommentar schreiben

Über mich

Mein Name ist Sebastian Widmann, ich komme aus Karlsruhe und ich beschäftige mich seit mittlerweile 12 Jahren mit Webdesign und Web-Technologien. Aus diesem Grund habe ich mich, parallel zu meinem Studium der Informationstechnik, im Jahr 2003 in diesem Bereich selbstständig gemacht.

Hilfe benötigt?

Sie benötigen Hilfe? Ich würde mich freuen, wenn ich Ihnen mit Rat und Tat zur Seite stehen kann. Kontaktieren Sie mich, einfach und unverbindlich. Entweder kann ich Ihre Anfrage direkt beantworten, oder Sie erhalten ein unverbindliches Angebot von mir. Sie gehen dabei zu keiner Zeit ein Risiko ein!