winapi - 完全替换 Windows 7 的登录屏幕?

标签 winapi winlogon gina

Windows XP 中,可以用您自己的 GINA 实现替换登录界面,这可以向登录屏幕添加额外的功能并实现一些组织特定的功能。

我看过许多 MSDN 文章,它们都表明使用新的登录系统(Windows Vista 和更新版本)不可能实现这一点。

但是,在登录屏幕上或每次调用 SAS 序列时,LogonUI 进程都会启动并为用户提供一个类似 GINA 的界面进行交互。

我想知道,是否可以滚动您自己的实现 LogonUI 以替换登录/SAS UI?我找不到关于它的任何文章,但我认为这是一个可行的选择。

最佳答案

有点晚了,但是给你。您可以使用自己的字段创建自定义凭据提供程序以接受登录凭据(无论采用何种形式)。如果您想超越这一点并构建一些工作流程,您将需要在凭证的 SetSelected 方法中启动一个模式窗口。然后您几乎可以使用您的 GINA 实现(没有实际的 GINA 函数)。使用 CPUS 类​​型了解您正在运行的模式(LOGON、LOCK_WORKSTATION、CHANGE_PASSWORD 等)并相应地自定义您的 UI。

显然,这不是“推荐”的方法(实际上很老套),但它是最简单的。一个警告:你会遇到 C-A-D 超时等问题,所以要为一些意外做好准备。

另一种可能更优雅的方法是使用登录/解锁屏幕构建自定义凭据提供程序(正确的方法)。然后提供链接以触发其他工作流程(例如,重置密码)。您可以编写自定义屏幕,通过实现凭据的 CommandLinkClicked 方法在单击特定链接时启动这些屏幕。

如果您有时间并且想正确地做到这一点,我会推荐第二种方法。以后您会省去很多麻烦。

关于winapi - 完全替换 Windows 7 的登录屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105456/

相关文章:

c++ - 是否可以在 Windows 登录屏幕上显示我的窗口?

python - pywin32 TOKEN_PRIVILEGES

windows - 从远程桌面 session 注销不会关闭 session ,在 Windows XP 32 位 - SP2 上再次显示登录屏幕

windows - 自定义 Windows GINA 身份验证

c++ - IStorage::OpenStorage OLECHAR *pwcsName for MS Project 2010

c++ - 为什么 GID_ZOOM 的中心点会改变?

c++ - WinAPI _Interlocked* char 的内部函数,short

c - 多个 CreateFileA 调用返回相同的文件句柄