You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server RDP自动化UI测试时分辨率异常变更的解决方法

解决Windows Server tscon会话后分辨率异常(1536x618)的方案

核心原因推测

tscon切换至console会话时,RDP客户端的显示缩放设置被同步到服务器会话,或服务器端显示配置缓存未正确重置,导致分辨率被强制调整为125%缩放对应的数值。

具体解决步骤

1. 强制RDP连接时禁用缩放同步

  • 打开RDP配置文件(.rdp),添加以下两行配置:
    desktopscalefactor:i:100
    winposstr:s:0,1,0,0,1920,1080
    
  • 或在RDP连接窗口的显示选项卡中操作:
    • 取消勾选「使用所有监视器的全屏」
    • 手动设置远程桌面大小为1920x1080
    • 勾选「不要在远程会话中使用显示缩放」(部分版本需在「高级>显示」中设置)

2. 重置注册表中的显示配置

登录服务器后打开regedit,修改以下项:

  • 用户级配置:
    路径:HKEY_CURRENT_USER\Control Panel\Desktop
    • 将LogPixels改为十进制96(对应100%缩放)
    • 设置Win32WindowSize为1920 1080
    • 设置Win32PaddedWindowSize为1920 1080
  • 系统级RDP配置:
    路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
    • 将DesktopWidth改为十进制1920
    • 将DesktopHeight改为十进制1080
    • 设置SessionResolutionLimit为0(解除分辨率限制)
      修改完成后重启服务器,或执行以下命令重启终端服务:
net stop termservice && net start termservice

3. 会话切换后强制设置分辨率

在执行tscon %sessionname% /dest:console之后,立即运行命令强制锁定分辨率:

  • 使用轻量工具nircmd:
    nircmd.exe setdisplay 1920 1080 32
    
  • 或用PowerShell脚本调用Windows API:
    Add-Type @"
    using System;
    using System.Runtime.InteropServices;
    public class Display {
        [DllImport("user32.dll")]
        public static extern bool ChangeDisplaySettings(ref DEVMODE lpDevMode, int dwFlags);
        [StructLayout(LayoutKind.Sequential)]
        public struct DEVMODE {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
            public string dmDeviceName;
            public short dmSpecVersion;
            public short dmDriverVersion;
            public short dmSize;
            public short dmDriverExtra;
            public int dmFields;
            public int dmPositionX;
            public int dmPositionY;
            public int dmDisplayOrientation;
            public int dmDisplayFixedOutput;
            public short dmColor;
            public short dmDuplex;
            public short dmYResolution;
            public short dmTTOption;
            public short dmCollate;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
            public string dmFormName;
            public short dmLogPixels;
            public int dmBitsPerPel;
            public int dmPelsWidth;
            public int dmPelsHeight;
            public int dmDisplayFlags;
            public int dmDisplayFrequency;
            public int dmICMMethod;
            public int dmICMIntent;
            public int dmMediaType;
            public int dmDitherType;
            public int dmReserved1;
            public int dmReserved2;
            public int dmPanningWidth;
            public int dmPanningHeight;
        }
    }
    "@
    $dm = New-Object Display.DEVMODE
    $dm.dmSize = [System.Runtime.InteropServices.Marshal]::SizeOf($dm)
    $dm.dmPelsWidth = 1920
    $dm.dmPelsHeight = 1080
    $dm.dmFields = 0x00000080 | 0x00000100
    [Display]::ChangeDisplaySettings([ref]$dm, 0) | Out-Null
    

4. 检查组策略限制

打开gpedit.msc,导航至路径:
计算机配置>管理模板>Windows组件>远程桌面服务>远程桌面会话主机>远程会话环境

  • 启用限制最大远程桌面服务会话分辨率,设置分辨率为1920x1080
  • 禁用使用远程桌面服务会话的默认显示设置,允许自定义显示配置
    修改后执行gpupdate /force刷新组策略

5. 替代tscon的会话保持方案

若tscon始终触发分辨率问题,可改用以下方式保持会话活跃:

  • 用AutoHotkey脚本模拟鼠标移动/键盘输入,避免会话断开
  • 配置组策略:计算机配置>管理模板>Windows组件>远程桌面服务>远程桌面会话主机>会话时间限制,将「活动但空闲的远程桌面服务会话的时间限制」设为「从不」

内容的提问来源于stack exchange,提问作者Josh Kreifels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 11:53:10