创建交互式登录会话

我正在尝试创建一个类似于微软废弃的超级快速用户切换器 ( 下载 )的实用程序,它允许快速用户切换而无需通过欢迎屏幕。

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

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

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

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

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

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

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

您要定位哪些Windows版本?

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

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