![如何在Windows7的登录界面通过开始输入名称来选择账户?](https://linux22.com/image/1263035/%E5%A6%82%E4%BD%95%E5%9C%A8Windows7%E7%9A%84%E7%99%BB%E5%BD%95%E7%95%8C%E9%9D%A2%E9%80%9A%E8%BF%87%E5%BC%80%E5%A7%8B%E8%BE%93%E5%85%A5%E5%90%8D%E7%A7%B0%E6%9D%A5%E9%80%89%E6%8B%A9%E8%B4%A6%E6%88%B7%EF%BC%9F.png)
当 MacOS 启动时,系统会提示用户选择要登录的帐户,用户可以用鼠标单击帐户的名称/图标,也可以直接输入帐户的名称。
我想在 Windows7 的登录屏幕上执行相同操作:登录屏幕弹出,我开始输入我的帐户名,选择帐户,enter然后输入密码并enter再次输入。无需使用鼠标。
(我意识到标签循环和难以跟踪的几乎看不见的焦点当前位置标记)
答案1
您正在寻求编写专门的凭据提供程序。我不会为您编写一个,即使对于 5000 名代表也不会,但我可以为您指明正确的方向。
文章使用凭据提供程序为 Windows Vista 创建自定义登录体验解释了 Microsoft 放弃早期 GINA 模型的基本原理。它开发了一个示例,通过混合凭据提供程序演示新功能,该提供程序允许将用户名、密码和域名存储在智能卡上,这样插入智能卡后,用户就会自动登录。
微软还提供了下载凭证提供程序示例,其中包括一份描述如何构建它们的概述文档。
如果您确实打算开发您的凭证提供程序,出于显而易见的原因,我强烈建议在虚拟机内部对其进行调试。
答案2
再想想,还有更简单的方法可以实现这一点:
选项一(已确认):让程序在登录屏幕上运行的一个好办法。:-)
取得所有权并替换%WINDIR%\System32\osk.exe通过步骤 4 中的程序。
前往轻松访问中心,不使用鼠标或键盘即可使用计算机。
使能够使用屏幕键盘。
保存并返回,在左侧点击更改管理设置。
点击将设置应用于登录桌面并保存。
选项二(应该可行):服务始终运行,因此它们可以在登录屏幕上启动程序。
选项三(似乎不起作用):任务计划程序为其提供了选项,我尝试过基于“启动”和“Winlogon WGA 事件”启动,但都没有成功,也许我需要设置“系统”以外的其他用户才能使其工作......选择:Winlogon 通知 DLL
这使得我们可以在登录屏幕上运行我们自己编写的程序!
使用设置WindowsHookEx 您可以创建一个 WH_KEYBOARD 钩子来处理输入。
- 选择:创建一个 GUI 窗口并赋予该窗口焦点。
- 方案 2: 如果你隐藏用户您可以跟踪用户名框,请参阅下面的 AutoItX。
使用 WMI 你可以枚举所有本地用户。
呼唤自动识别系统函数允许您从应用程序中操作 Windows 登录屏幕。这还允许我们通过检查 explorer 是否运行来检测我们是否处于登录屏幕。
自动窗口显示屏幕为:
Class: AUTHUI.DLL: LogonUI Logon Window
并且密码字段名为Edit1
,因此您实际上可以读取输入的数据。
通过这种方式,你应该能够运行一个程序,监听你输入的字符,检索帐户列表,当它找到匹配项时自动完成适当的帐户。
我建议使用 C++ (Native) 或 C# (PInvokes 用于 API 调用,简单的 WMI),但任何语言都可能适合...
选择:
我认为可能只使用已编译的 AutoIt 脚本完成这个任务,你可以追踪和操纵用户名框以及枚举 WMI,这是实现此功能所需的唯一东西。也许你需要禁用托盘图标功能尽管...
您可以使用 AutoIt 窗口信息(将其放置为操作系统) 在登录屏幕上查看班级名称。
答案3
Windows Vista 和 Windows 7 对于域登录而言,开箱即用(有点)。
这只适用于支持域加入的 Windows 版本。您可能能够编写一个脚本来在其他版本上执行此操作 - 请告诉我,我会研究一下。
启动Group Policy Editor
( Start
> Run
> gpedit.msc
)。
查找Computer Config
\ Windows Settings
\ Security Settings
\ Local Policies
\ Security Options
\ Interactive logon:
Do not display last user name
,并将其设置为Enabled
下次登录时,您应该能够输入您想要的用户名。