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