创建交互式登录会话

时间:2010-01-25 17:59:02

标签: c# .net c++ session winlogon

我正在尝试创建一个类似于Microsoft废弃的Super Fast User Switcherdownload)的实用程序,它允许快速用户切换而无需通过欢迎屏幕。

我有一个使用未记录的WinStationConnectW API(以及WTSEnumerateSessions)的工作实现,但它只能切换到已登录的用户。

如何创建登录会话以便切换到未登录的用户? 我只需要支持XP,虽然在Vista / Seven上工作会很好。 (我目前的代码已经存在)

我知道这是可能的,因为Super Fast User Switcher可以做到这一点。 (虽然它需要Windows服务才能完成)

我正在编写C#,但我可以将任何答案翻译成C#。

2 个答案:

答案 0 :(得分:4)

我在XP中通过调用InitiateInteractiveLogonShellLocalMachine COM对象中未记录的shgina.dll函数解决了这个问题。

此方法只能由本地系统帐户调用,它会将用户登录到控制台。 (它无法将用户登录到RDP会话)

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

答案 1 :(得分:0)

您要定位哪些Windows版本?

我相信没有简单的方法。对于Windows XP,有GINA。对于Windows Vista,有“凭证提供商”。

此外,如果您的目标是Windows XP,则可以创建服务,将按键发送到WinLogon桌面以登录,就像用户在键盘上按下它们一样。这是由RealVNC或UltraVNC完成的,我不记得了。但是,此方法在Windows Vista中不起作用。