AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzer wechseln

Ein Thema von Laufi · begonnen am 17. Aug 2008 · letzter Beitrag vom 19. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
Laufi

Registriert seit: 21. Mär 2006
86 Beiträge
 
#1

Benutzer wechseln

  Alt 17. Aug 2008, 19:47
Hallo!

Wie kann ich mit Delphi den Benutzer wechseln, so wie wenn ich mit WIN-L einen Benutzer anwähle? Also ich möchte eine Funktion schreiben wo ich Benutzername und Passwort übergebe, damit dann zu diesem geswitcht wird mit Desktop und allem

Liebe Grüsse
Laufi
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: Benutzer wechseln

  Alt 17. Aug 2008, 21:13
Geht nicht...

...ohne riesen Aufwand!

Aber du kannst den Desktop mit LockWindowStation sperren oder einen neuen Desktop anlegen und dort den Explorer mit dem Token von der API LogonUser starten. Das funktioniert mit dem meisten Programmen, ist aber nicht wirklich sicher.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Benutzer wechseln

  Alt 17. Aug 2008, 23:51
Zitat von Dezipaitor:
Geht nicht...

...ohne riesen Aufwand!
Weiß du was Windows eigentlich genau macht, wenn man die schnelle Benutzerumschlatung benutzt? Das würde mich jetzt mal interessieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Benutzer wechseln

  Alt 18. Aug 2008, 07:31
Zitat von Luckie:
Weiß du was Windows eigentlich genau macht, wenn man die schnelle Benutzerumschlatung benutzt? Das würde mich jetzt mal interessieren.
Der Terminaldienst erstellt eine neue TerminalSession, dort drin die Windowstation und die Desktops und lädt dann das Benutzerprofil, um den Explorer usw zu starten.
Am PC angemeldete Benutzer werden durch eine Session getrennt. Session grenzen so ziemlich alles ab, bis auf Pipes, IP und Memory. Handles sind nie gültig in der anderen Sessions, und auf den Desktop der anderen Session kommt man auch nicht. Das gibt es schon seit Windows XP, jedoch ist es vielen erst bei Vista passiert, dass ihre Dienste nicht mehr laufen. Daher sage ich immer, dass es reiner Zufall ist, dass das Programm X in XP läuft. Lässt man nämlich einen Dienst in XP laufen und loggt sich als zweiter User ein, dann kann der Dienst dort nichts ausgeben, da es sich ja um eine andere Session handelt.

Daher schreibe ich auch immer, dass die Leute ihre Dienste und Apps nach dem MVC (siehe Wikipedia) bauen sollen.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Benutzer wechseln

  Alt 18. Aug 2008, 08:23
Bis Windows XP gab es ja nur eine interaktive Windows Station, die WinSta0. Kann es davon jetzt mehrere geben oder gibt es jetzt mehr interaktive Windows Stations?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

Re: Benutzer wechseln

  Alt 18. Aug 2008, 08:43
Ein Windows XP sieht mit mehreren Benutzern so aus :

Code:
Session 0 (phys Console)
|- Winsta 0 (sichtbar)
  |- Default
  |- Winlogon
  |- ...
|- Service-$xxx (unsichtbar)
Session 1 (TerminalSession: FUS, Remote Desktop)
|- Winsta 0 (sichtbar)
  |- Default
  |- Winlogon
  |- ...
|- weitere WindowStations (unsichtbar)
...
Vista:

Code:
Session 0 (Dienstsession)
|- Winsta 0 (sichtbar in Ausnahmefällen - Legacy Mode)
  |- Default
  |- ...
|- Service-$xxx (unsichtbar)
Session 1 (Session des ersten angemeldeten Benutzers, phys oder Terminal (RDP) )
|- Winsta 0 (sichtbar)
  |- Default
  |- Winlogon
  |- ...
|- weitere WindowStations (unsichtbar)
...
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Benutzer wechseln

  Alt 18. Aug 2008, 08:46
Interessant. Danke für die Information.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#8

Re: Benutzer wechseln

  Alt 18. Aug 2008, 10:02
Es gibt keine Funktion, um zwischen zwei Sessions umzuschalten!
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#9

Re: Benutzer wechseln

  Alt 18. Aug 2008, 15:01
Actually... it does.
It's called WinStationConnect, an undocumented function from winsta.dll. It's present in JwaWinsta.pas (Jedi Apilib):

Delphi-Quellcode:
function WinStationConnectW(hServer: Handle; SessionId: DWORD;
  TargetSessionId: DWORD; pPassword: LPWSTR;
  bWait: BOOL): Boolean; stdcall;
and also in Jwscl Terminal Server unit (TJwWTSSession.Connect).

If you switch to a session with the same user you don't need to specify a password in which case you pass empty string (and not nil!).
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#10

Re: Benutzer wechseln

  Alt 18. Aug 2008, 15:17
Ich habe indirekt damit gemeint, dass es keine dokumentierte Variante gibt!

So, this func can actually change the session ID from 1 to 0 in Vista??? So we could see ServiceGUIs ?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz