2010-01-25 73 views
8

我正在嘗試創建一個類似於微軟放棄的Super Fast User Switcherdownload)的實用程序,該程序允許在不通過歡迎屏幕的情況下快速切換用戶。創建一個交互式登錄會話

我有使用無證WinStationConnectW API(與WTSEnumerateSessions一起)工作的實施,但它只能切換到誰已經登錄的用戶。

如何創建一個登錄會話,以便它可以切換給沒有登錄的用戶?
我只需要支持XP,儘管在Vista/Seven上工作會很好。 (我目前的代碼已經)

我知道這是可能的,因爲超級快速用戶切換器做到了。 (雖然它需要一個Windows服務來做到這一點)

我正在寫C#,但我可以將任何答案翻譯成C#。

+0

你試過P /調用LogonUser嗎? – 2010-01-25 18:17:42

+0

@nobugz:'LogonUser'創建用戶令牌,而不是登錄會話。我已經在使用它來驗證密碼。 – SLaks 2010-01-25 18:24:37

+1

由於其他團隊與Citrix或GotoMyPC等公司做類似的工作,我認爲這是可行的。但是,他們可能會在自己的服務中做一些事情,所以我不確定。 – jcolebrand 2010-11-01 17:15:31

回答

4

我在XP中通過調用shgina.dll中的ShellLocalMachine COM對象中的未公開的InitiateInteractiveLogon函數來解決此問題。

此方法只能由本地系統帳戶調用,它會將用戶登錄到控制檯。 (它不能將用戶登錄到RDP會話)

Windows 7(也可能是Vista)附帶的DLL版本不包含此方法。

+2

此功能沒有記錄,因此它沒有任何Google搜索結果。 (谷歌還沒有索引這個答案)http://www.google.com/search?q=shgina.dll+ShellLocalMachine+%2BInitiateInteractiveLogon – SLaks 2010-02-01 20:57:17

0

要定位哪個Windows版本?

我相信沒有簡單的辦法。對於Windows XP,有GINA。對於Windows Vista,有'憑證提供商'。另外,如果您的目標是Windows XP,您可以創建服務,該服務將按鍵發送到WinLogon桌面進行登錄,就好像用戶在鍵盤上按下它們一樣。這是由RealVNC或UltraVNC完成的,我不記得了。但是,這種方法在Windows Vista中不起作用。

+0

GINA不存在問題,因爲它(由於某種原因)與快速用戶切換不兼容。 – SLaks 2010-01-31 12:45:16