如何让RDP会话通过Start-Process以正常窗口而非最大化启动?
解决RDP会话强制以正常窗口启动的问题
核心原因
mstsc.exe会优先读取自身存储的窗口状态(比如上次退出时的配置,或是对应账户的注册表设置),Start-Process的-WindowStyle参数对这类自主管理窗口的程序无效;尤其是用-Verb RunAs启动管理员权限会话时,会加载管理员账户的RDP配置,这也是窗口状态不一致的主要诱因。
可行解决方案
1. 命令行直接指定窗口宽高
mstsc支持通过/w(宽度)和/h(高度)参数强制设置窗口大小,直接覆盖默认状态。执行以下命令:
Start-Process "$env:windir\system32\mstsc.exe" -Verb RunAs -ArgumentList "/v:$ComputerName /w:1280 /h:720"
- 替换
1280和720为你需要的正常窗口尺寸,注意数值不要超过当前屏幕分辨率,否则仍可能触发最大化。
2. 使用自定义RDP配置文件
如果需要更精细的窗口控制(比如指定窗口位置),可以创建一个.rdp配置文件:
- 手动打开
mstsc.exe,设置窗口为正常大小(不要最大化),调整好位置后,点击「显示选项」→「另存为」,保存成一个.rdp文件。 - 用文本编辑器打开这个文件,确认包含类似以下配置(如果没有可以手动添加):
其中desktopwidth:i:1280 desktopheight:i:720 winposstr:s:0,1,100,100,1380,820winposstr的格式是0,1,左,上,右,下,右-左=宽度,下-上=高度。 - 调用时指定该配置文件:
这个方法会完全强制Start-Process "$env:windir\system32\mstsc.exe" -Verb RunAs -ArgumentList "C:\path\to\your\config.rdp /v:$ComputerName"mstsc使用配置文件里的窗口设置,彻底忽略历史状态。
3. 清除管理员账户的RDP历史状态(可选)
如果是管理员账户的RDP默认状态为最大化导致的问题,可以删除对应注册表项重置:
- 打开管理员权限的注册表编辑器,定位到
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client - 删除
Default项或其中的MRU*相关键值,清除历史窗口配置。不过这个方法是一次性的,后续若再次最大化退出,状态会被重新保存,可靠性不如前两种方法。
内容的提问来源于stack exchange,提问作者ThePostMan
相关产品推荐
相关产品推荐

