2010-01-25 19 views
8

Ich versuche, ein Dienstprogramm ähnlich wie Microsofts aufgegeben Super Fast User Switcher (download) zu schaffen, die ohne Umweg über den Begrüßungsbildschirm schnelle Benutzerumschaltung ermöglicht.eine interaktive Anmeldesitzung

Ich habe eine funktionierende Implementierung der undokumentierten WinStationConnectW API (zusammen mit WTSEnumerateSessions) verwenden, aber es kann nur für einen Benutzer wechseln, die bereits angemeldet ist.

Wie ich eine Login-Sitzung erstellen können, so dass sie wechseln zu einem Benutzer, der nicht eingeloggt ist?
Ich muss nur XP unterstützen, obwohl es schön wäre, auf Vista/Seven zu arbeiten. (Meine aktuellen Code bereits der Fall ist)

Ich weiß, dass dies möglich ist, weil Super Fast User-Switcher es tut. (Obwohl es einen Windows-Dienst benötigt, es zu tun)

ich C# zu schreiben, aber ich kann keine Antwort in C# übersetzen.

+0

Haben Sie P/Hervorrufen von Logonuser versuchen? –

+0

@nobugz: 'LogonUser' erstellt ein Benutzer-Token und keine Anmeldesitzung. Ich benutze es bereits, um Passwörter zu verifizieren. – SLaks

+1

Da andere Gruppen ähnliche Arbeit mit Sachen wie Citrix oder GotoMyPC machen, würde ich denken, dass dies machbar wäre. Sie können jedoch etwas in ihrem eigenen Dienst tun, also bin ich mir nicht sicher. – jcolebrand

Antwort

4

Ich löste dies in XP durch den Aufruf der undokumentierten InitiateInteractiveLogon Funktion in der ShellLocalMachine COM-Objekt in .

Diese Methode, die nur vom lokalen Systemkonto aufgerufen werden kann, meldet einen Benutzer an der Konsole an. (Es kann keinen Benutzer in einer RDP-Sitzung anmelden)

Die Version der DLL, die in Windows 7 (und vermutlich auch Vista) enthalten ist, enthält diese Methode nicht.

+2

Diese Funktion ist nicht dokumentiert und hat keinerlei Google-Suchergebnisse. (Google hat diese Antwort noch nicht indiziert) http://www.google.com/search?q=shgina.dll+ShellLocalMachine+%2BInitiateInteractiveLogon – SLaks

0

Welche Windows-Versionen wollen Sie ansprechen?

Ich glaube, dass es kein einfacher Weg ist. Für Windows XP gibt es GINA. Für Windows Vista gibt es "Credential Providers".

Auch, wenn Sie Windows XP-Targeting können Sie erstellen Service, die Tastenanschläge an WinLogon Desktop anmelden, als ob Benutzer drückte sie auf der Tastatur sendet. Dies wurde von RealVNC oder UltraVNC gemacht, ich kann mich nicht erinnern. Dieser Ansatz funktioniert jedoch nicht in Windows Vista.

+0

GINA kommt nicht in Frage, weil es (aus irgendeinem Grund) nicht mit Fast User Switching kompatibel ist. – SLaks