如何在Windows7的登录界面通过开始输入名称来选择账户?

如何在Windows7的登录界面通过开始输入名称来选择账户?

当 MacOS 启动时,系统会提示用户选择要登录的帐户,用户可以用鼠标单击帐户的名称/图标,也可以直接输入帐户的名称。

我想在 Windows7 的登录屏幕上执行相同操作:登录屏幕弹出,我开始输入我的帐户名,选择帐户,enter然后输入密码并enter再次输入。无需使用鼠标。

(我意识到标签循环和难以跟踪的几乎看不见的焦点当前位置标记)

答案1

您正在寻求编写专门的凭据提供程序。我不会为您编写一个,即使对于 5000 名代表也不会,但我可以为您指明正确的方向。

文章使用凭据提供程序为 Windows Vista 创建自定义登录体验解释了 Microsoft 放弃早期 GINA 模型的基本原理。它开发了一个示例,通过混合凭据提供程序演示新功能,该提供程序允许将用户名、密码和域名存储在智能卡上,这样插入智能卡后,用户就会自动登录。

微软还提供了下载凭证提供程序示例,其中包括一份描述如何构建它们的概述文档。

如果您确实打算开发您的凭证提供程序,出于显而易见的原因,我强烈建议在虚拟机内部对其进行调试。

答案2

再想想,还有更简单的方法可以实现这一点:

  1. 选项一(已确认):让程序在登录屏幕上运行的一个好办法。:-)

  2. 取得所有权并替换%WINDIR%\System32\osk.exe通过步骤 4 中的程序。

  3. 前往轻松访问中心不使用鼠标或键盘即可使用计算机

  4. 使能够使用屏幕键盘

  5. 保存并返回,在左侧点击更改管理设置

  6. 点击将设置应用于登录桌面并保存。

  7. 选项二(应该可行):服务始终运行,因此它们可以在登录屏幕上启动程序。

  8. 编写服务C/C#它很早就启动了,也许在注册表中将其启动类型设置为启动。

  9. 让服务检测C/C#什么时候执行程序启动后,它将启动我们的程序。

  10. 选项三(似乎不起作用):任务计划程序为其提供了选项,我尝试过基于“启动”和“Winlogon WGA 事件”启动,但都没有成功,也许我需要设置“系统”以外的其他用户才能使其工作......选择Winlogon 通知 DLL

  11. 这使得我们可以在登录屏幕上运行我们自己编写的程序!

    • 使用设置WindowsHookEx 您可以创建一个 WH_KEYBOARD 钩子来处理输入。

      • 选择:创建一个 GUI 窗口并赋予该窗口焦点。
      • 方案 2: 如果你隐藏用户您可以跟踪用户名框,请参阅下面的 AutoItX。
         
    • 使用 WMI 你可以枚举所有本地用户

    • 呼唤自动识别系统函数允许您从应用程序中操作 Windows 登录屏幕。这还允许我们通过检查 explorer 是否运行来检测我们是否处于登录屏幕。

      自动窗口显示屏幕为:Class: AUTHUI.DLL: LogonUI Logon Window 并且密码字段名为Edit1,因此您实际上可以读取输入的数据。

    通过这种方式,你应该能够运行一个程序,监听你输入的字符,检索帐户列表,当它找到匹配项时自动完成适当的帐户。

    我建议使用 C++ (Native) 或 C# (PInvokes 用于 API 调用,简单的 WMI),但任何语言都可能适合...

  12. 选择:

我认为可能只使用已编译的 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

下次登录时,您应该能够输入您想要的用户名。

相关内容