Entwickler-Ecke

WPF / Silverlight - Ausführen mit Domain Admin


kostonstyle - Mo 25.01.10 10:32
Titel: Ausführen mit Domain Admin
hallo zusammen
momentan versuche ich ein Programm zu entwickeln mit Domain Admin login. Der Ablauf sieht so aus,
der Benutzer öffnet das Programm, dann wird er aufgefordert, Domain Admin User und Passwort einzugeben.
War die Authentifizierung erfolgreich, wird ein zweites Fenter geöffnet, das Fenster wird aber als Domain Admin
ausgeführt, vergleichbar, wenn man ein Programm "Ausführen als..." ausführt.
Meine Frage, wie bringe ich so etwas fertig, bietet .NET eine Klasse, um mit Active Directory zu arbeiten?

Gruss kostonstyle


jaenicke - Mo 25.01.10 12:44

Das funktioniert zumindest über direkte Nutzung der Windows API mit LogonUser [http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx] und den entsprechenden Funktionen.

In jedem Fall brauchst du aber einen zweiten Prozess, egal ob eine Instanz der eigenen Exe oder eine neue Exe oder ein COM Objekt (Stichwort Vista Elevation). Denn es ist nicht möglich die Rechte des eigenen Prozesses zu erhöhen.


kostonstyle - Mo 25.01.10 13:01

könntest du bitte ein beispiel zeigen, wie ich LogonUser benutze?


jaenicke - Mo 25.01.10 13:08

Ich habe gerade ein Beispiel für C# gefunden, ob das auch für WPF so funktioniert weiß ich nicht, da ich damit wenig Erfahrung habe:
http://www.codeproject.com/KB/cs/cpimpersonation1.aspx


kostonstyle - Mo 25.01.10 14:03

habe noch etwas gefunden im netz, .NET bietet eine Klasse DirectoryEntry() zum arbeiten mit Active Directory

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
DirectoryEntry login = new DirectoryEntry();
            login.Path = "LDAP://xxx.xx.xx.xx/CN=Users;DC=xxxxxxxx.xx";
            login.Username = @"domain.xxx\username";
            login.Password = "xxxxxxxxxxxx";
            login.AuthenticationType = AuthenticationTypes.Secure;
            try
            {
                Console.WriteLine(login.Name);
            }
            catch (DirectoryServicesCOMException ex)
            {
                Console.WriteLine(ex.Message);
            }


kostonstyle - Mo 25.01.10 14:09

Habt ihr villeicht ein kleines Beispiel mit Login user?