背景:作为我正在构建的自动化测试套件的一部分,我需要“按需”在我的虚拟机上设置 Autologon。按需,我的意思是我不想预先配置我的虚拟机或任何快照来设置自动登录,出于安全原因和一个巨大的商业案例。
到目前为止,我的解决方案是:我将脚本复制到来宾计算机,然后使用 Sysinternals PsExec 来执行它。脚本是:
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v DefaultUserName /t REG_SZ /d myusername
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v DefaultPassword /t REG_SZ /d myfakepassword
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v DefaultDomainName /t REG_SZ /d mydomain
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v ForceAutoLogon /t REG_SZ /d 1
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /f /v AutoAdminLogon /t REG_SZ /d 1
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoLogonChecked" /f /ve /d 1
Run Code Online (Sandbox Code Playgroud)
注意:我不认为 Windows 2000 后的机器需要 AutoLogonChecked,但我现在这样做只是为了以防万一。也许 ForceAutoLogon 也不是,还不确定。
问题:我看到 PsExec 正确执行此操作并且所有值都在注册表中,但是当我重新启动机器时,用户不会自动登录......当我第二次运行它然后重新启动机器时,用户终于登录了。
注册表状态之间的差异表明,我第一次运行它时,它缺少 AutoAdminLogon 的“1”和 DefaultPassword 键。我第二次执行它时,这些值完全符合我的预期。
那么,这里发生了什么?这是预期的吗?这篇文章最后声称它真的一切正常(问题是注销脚本正在设置这些值)。然而,似乎对我不起作用。
请注意,这似乎是 Windows 7 独有的,在 Windows XP 中不会发生
另请注意,您不需要 PsExec 来重新创建问题 - 只需自己修改注册表
编辑/更新:
编辑/更新 2:这只发生在 Win7x86、Win7x64、Win8x64 上。Windows XP 不会发生这种情况
编辑 3:我使用 Sysinsternal 的 Autlogon.exe 工具得到相同的行为。
| 归档时间: |
|
| 查看次数: |
9635 次 |
| 最近记录: |