Heyho Community,
Ich beschäftige mich für ein aktuelles projekt gerade mit AD, LDAP etc.
An Funktionen habe ich es bereits geschafft, anhand eines Usernamens seine Gruppen herrauszufinden, und anhand der Gruppe die User die dazugehören.
Hintergrund der ganzen Geschichte ist, das ich in mein Projekt einen sog. Expertenmodus integrieren möchte.
(Manche Funktionalitäten für normale User nicht ausführbar)
Es gibt folgende Anforderungen:
1.: Der Benutzer soll (wie bei "Als Admin ausführen") ohne abmelden den expertenmodus starten könne.
3.: Die vorherige idee, die gruppe des aktuell eingeloggten nutzers dafür zu benutzen, funktioniert durch punkt eins nicht mehr.
Daher meine Kernfrage:
**Was passiert genau beim "Als Admin anmelden"? **
Weil ich genau das bräuchte. Einen temporären "Userswitch".
Liebe Grüße, Killerkruemel
Hi Killerkrümel,
das "Als Admin ausführen" bezieht sich ja auf Programme. Und damit auf zu startende Prozesse.
Jeder Prozess besitzt under Windows ein Access Token. Kurz gesagt, ist das der Schlüssel für alle Aktivitäten des Prozesses.
Standardmäßig bekommt jeder Prozess das Token seines Eltern-Prozesses. (Also wenn du eine Anwendung startest, dann meistens das Token von Explorer.exe. Und der hat seins irgendwann mal bekommen, als du dich am PC angemeldet hast, ist also dein Token.
Und bei "Als Admin ausführen" vergibt man explizit ein neues Token an den neuen Prozess. Nämlich das Token des Administrators.
beste Grüße
zommi
Hey Zoomi, danke für deine schnelle antwort. ähnliches hatte ich schon gehofft / erwartet.
using (new Impersonator(USER_NAME, DOMAIN_NAME,USER_PASSWORD ))
{
Process.Start("SOMEAPPLICATION.EXE");
}
ich habe nun ein Programm geschrieben, welches mit wrappern einem process ein neues token zuweist.
aber wie komm ich an das token ran, um zu testen, ob das auch passiert ist?
Gruß, Killerkruemel
*seufzt* MSdn is einfach zu mächtig schmunzelt
WindowsImpersonationContext Class
achja danke für den tipp in nem anderen thread zoomi g
Gruß, Killerkruemel
ps.: Falls jemand das Snippet braucht, (quasi selbstgeschriebenes "RunAs_INsertUser")
einfach bescheidsagen 😃
von kernelmode aus kann man leicht einen prozess zur laufzeit zum administartor ändern^^ Habe dazu mal nen code gefunden, der das in 22 assemblerbefehlen macht, dieser code lief allerdings nur auf win xp im kernelmode, sollte aber anpassbar sein. ^^
Dieser code hat auch einfach das securitytoken ersetzt.
Das "stoned bootkit" benutzt etwas ähnliches.