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

2024-01-10

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

This article https://technet.microsoft.com/en-us/library/dn751047(v=ws.11).aspx https://technet.microsoft.com/en-us/library/dn751047(v=ws.11).aspx explains the logon authentication workflow on Windows in the following image: authentication workflow

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

没有 winlogon API 可以实现此目的。正如在其他问题中看到的,使用 winapiLogonUser函数成功执行身份验证并返回令牌,但它不会切换到应用程序桌面,并且登录 UI 仍保留在屏幕上。

大多数文章和 SO 答案都暗示凭据提供程序,但所有凭据提供程序示例都需要用户与 登录用户界面。

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

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

现在,我有兴趣执行步骤 4 和 4.1。


就在传递时...但是,在 Microsoft 的示例中,不是有一个接受异步输入的凭据提供程序吗?我确实写过一个登录用户,无论显示什么图块,都扫描可接受的指纹。对我来说,这意味着与 LogonUI 的交互只需是隐式的,但也许我遗漏了一些东西。

但也许我不是。尽管我毫不怀疑其意图是异步输入将来自用户对硬件的操作,就像扫描手指一样,但我通常不记得这一点。如果不是,那么您可能会以编程方式选择以呈现凭据的形式,就好像它们是异步收集的一样 - 不是从明显连接到计算机的设备,而是从您的 HTTP 侧通道(谁知道是什么)收集。

那么,您能否让凭证提供者从您的服务监听 RPC,以获取您的服务通过其侧通道收集的凭证通知?或者让您的服务侦听来自凭证提供者的 RPC 以询问哪些凭证可用?如果一个方向被关闭(甚至出于安全考虑),我可能不会感到惊讶,但我认为可以使一个或另一个方向发挥作用。

无论你是否想做这些,我都不想介入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式与 winlogon 交互? 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • C# 静态类型不能用作参数

    public static void SendEmail String from String To String Subject String HTML String AttachmentPath null String Attachme
  • 是否需要销毁运算符删除的形式才能真正销毁对象?

    C 20 添加了破坏形式operator delete区别于std destroying delete t范围 它导致delete表达式在调用之前不再销毁对象operator delete 目的是在显式调用对象的析构函数和释放内存之前 允许
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 我们可以通过指针来改变const定义的对象的值吗?

    include
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • 如何在 C++ 中使用 LoadLibrary(..) 调用 kernel32.dll 函数 GetTickCount()

    我正在寻找一个在 Windows 机器上获取以毫秒为单位的时间的函数 本质上 我想调用这个 WinAPI 函数 GetTickCount 但我陷入了 使 用 LoadLibrary n 调用 GetTickCount 函数 部分 我搜索了每
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐