如何更改 Windows 中自动登录的默认分辨率?

如何更改 Windows 中自动登录的默认分辨率?

我有几个 Windows Server 2012 虚拟系统,主要在 AWS 上。这些系统用于使用 Selenium 执行基于浏览器的 UI 测试。测试需要使用特定用户帐户启动,因为该用户已正确配置 UI 环境以运行测试。

为了理解这种情况,想象一下您通过 RDP 登录到远程虚拟系统,配置桌面环境以运行测试,然后启动测试并观察它们的运行情况。到目前为止一切顺利,如果我以这种方式运行测试,一切都正常。

为了使整个过程自动化,我将测试客户端配置为 Jenkins Slave。需要注意的是,我必须使用为测试配置了 UI 环境的同一用户帐户启动 Jenkins Slave 进程。这可确保当我通过 Jenkins 启动测试时使用正确的用户帐户和 UI 环境。最后,只要我打开了 RDP 连接,我就可以通过这种方式从 Jenkins 成功运行测试。

问题是,一旦我断开与测试客户端的连接,测试就会开始失败。看来,需要与特定用户帐户建立有效的 RDP 连接才能使所有 UI 测试成功。这就是我现在试图消除的问题。

到目前为止,解决方案似乎是将我用于测试的用户帐户配置为在测试客户端启动时自动登录。要配置自动登录,我使用自动登录工具,但也有其他方法可以达到同样的效果。系统启动后,我的用户似乎成功“登录”,即绕过登录屏幕后,它的 GUI 环境以默认的 1024x768 屏幕初始化,并且所有定义为登录后自动启动的程序都成功启动,包括我的 Jenkins Slave 进程。

当我通过 Jenkins 针对此类测试客户端运行 UI 测试时,大多数测试都成功完成,除了那些需要比默认 1024x768 更高分辨率的测试。这就是我试图找到解决方案的原因。

在自动登录完成并启动 Jenkins Slave 进程后,我尝试使用多个命令行工具(如 QRes)更改屏幕分辨率 - 但失败了。似乎没有连接实际的显示器,这些工具无法更改分辨率。有类似的问题这里使用其他一些方法来改变默认分辨率(尽管它们似乎都不起作用),但请注意,为了使解决方案独立于所使用的虚拟化技术,我主要寻找一种方法来更改 Windows 本身的默认分辨率,而不是通过某些 WMWare 或 AWS 配置工具。

在谷歌上搜索了一番后,我只找到了更改自定义 Windows 安装介质的默认 1024x768 分辨率的方法。这让我想到,这个 1024x768 默认分辨率根深蒂固,但仍然可以配置。

有谁知道如何更改自动登录的默认分辨率 1024x768?有人能建议我向谁以及在哪里询问这个问题吗?也许有一些论坛专门处理与此类 Windows 内部相关的问题?

答案1

我在构建 Windows Selenium 农场以在特定分辨率下进行测试时遇到了同样的问题。

通过以下方式在 Windows 上设置无头屏幕分辨率:

  1. 创建一个名为 rdp_local 的新用户
  2. 创建启动脚本,以 RDP 方式以指定的分辨率进入指定的用户帐户
  3. 添加防火墙规则以打开 RDP 端口 3389
  4. 配置自动登录以在重启时以 rdp_local 身份登录

请注意,自动登录需要用户名和密码,并且密码以未加密的形式存储在 Windows 注册表 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 下。

在 Amazon Windows Server 2012 R2 上测试。

以下是完成上述所有操作的 Chef 菜谱: https://github.com/dhoer/chef-windows_screenresolution

另外还有一个巧克力包装:https://community.chocolatey.org/packages/screen-resolution

答案2

如果这有用的话,我在注册表中找到了更简单的方法......

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\MSH062E0_00_07DB_C6^182FDC0875F0A76803E4A9848A8C1EA7\00

我猜测之后的位\Configuration\将随着您的设置而变化,但在 00 中您会发现PrimSurfSize.cxPrimSurfSize.cy设置默认的“无头”分辨率。

答案3

我们在云上运行的虚拟机上使用 selenium 时遇到了完全相同的情况。

我能够通过连接到 VM 的控制台会话(以便不调用任何 rdp 上下文)并仅为用户和系统设置默认分辨率来解决该问题。之后一切正常。

答案4

您可以设置一次默认桌面分辨率,并且它将持久存在,无需每次启动时执行某些脚本。

您需要:

  1. 使用 TeamViewer 或 TightVNC(任何不强制自行解析的设备)连接到服务器。

  2. 像平常一样更改分辨率,一切就完成了。

相关内容