首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式与winlogon交互?

如何以编程方式与winlogon交互?
EN

Stack Overflow用户
提问于 2017-12-30 23:17:37
回答 6查看 5.2K关注 0票数 29

我有一个Windows服务,我想用它以编程方式解锁工作站,使用帐户用户名和密码。

本文https://technet.microsoft.com/en-us/library/dn751047(v=ws.11).aspx在下面的图像中解释了Windows上的登录身份验证工作流:

如上所述,在步骤5中,用户将凭证输入到登录UI中。我想要实现的是让Windows输入凭据并让winlogon执行登录。

没有实现这一目标的winlogon API。正如在其他问题中所看到的,使用winapi的LogonUser函数成功地执行身份验证并返回一个令牌,但它不会切换到应用程序桌面,登录UI保持在屏幕上。

大多数文章和答案都暗示了凭据提供程序,但所有凭据提供程序示例都需要用户与登录UI进行交互。

更新:我看到一些用户还没有完全理解这个问题,并提出了一些对我的情况没有用的解决方案。我想要实现的工作流程如下:

  1. Windows服务在Windows启动时启动(已完成)。
  2. 相同的Windows服务具有web服务,并通过API接受HTTP请求(已完成)。
  3. 用户通过API从另一个设备向服务提供凭据(已完成)。
  4. 如果使用凭据登录到工作站。 4.1如果有锁(WinKey + L),则使用凭据也解锁工作站。
  5. (可选)服务通过API公开Windows帐户。
  6. (可选)用户可以向服务指定要用于登录的帐户。

现在,我对第4步和第4.1步感兴趣。

EN

回答 6

Stack Overflow用户

发布于 2018-01-16 22:07:02

路过的时候..。但是,在微软的示例中,难道没有接受异步输入的凭据提供商吗?我当然写了一个登录用户,谁扫描一个可接受的指纹,无论什么瓷砖显示。对我来说,这意味着与LogonUI的交互仅仅是隐式的,但也许我遗漏了一些东西。

但也许我不是。虽然我并不怀疑异步输入将来自于对硬件进行操作的用户,就像扫描手指一样,但我不记得这是一条规则。如果不是,那么您可以使用编程选项,将凭据呈现为异步收集--不是从明显连接到计算机的设备,而是从HTTP的侧通道,谁知道是什么。

因此,您是否可以让凭据提供者从您的服务中侦听RPC,以通知您的服务通过其侧通道收集的凭据?或者让您的服务从您的凭据提供程序中侦听RPC以询问哪些凭据可用?如果一个方向被关闭--甚至是为了安全--我可能不会感到惊讶--但我认为可以让一个或另一个方向发挥作用。

不管你是否想做这件事,我不想进入。

票数 3
EN

Stack Overflow用户

发布于 2018-01-15 11:46:21

不是我宽恕你,而是给你一个解决问题的办法。而且它不是以编程方式与WinLogon进程交互的。它是以编程方式围绕它工作的。

使用Windows自动登录属性。并重新启动以更改为该用户。注意,这涉及到将密码以明文形式存储在注册表中。

特别设置这些regkey

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogin HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword

*编辑*

4.对4.1没有帮助。除非你想重新启动来解锁,我怀疑。

另一种听起来很有前途的选择\值得研究的是关于一个老问题https://stackoverflow.com/a/35173886/4640588

票数 1
EN

Stack Overflow用户

发布于 2018-01-16 09:30:50

为此,我编写了一个商业解决方案,名为SasLibEx。SasLibEx是一个面向开发人员的库,它支持c/c++和delphi。

SasLibEx可以:

  • 模拟Ctrl Alt Del (安全注意序列)
  • 取消Ctrl Alt Del
  • 锁工作站
  • 解锁工作站(没有凭据)
  • 禁用Ctrl Alt Del
  • 再次启用Ctrl Alt Del
  • 取消挂起的UAC请求
  • 桌面上锁了吗

请参阅https://www.remkoweijnen.nl/blog/tag/saslibex/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48038678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档