想要在Windows 11系统下,让特定软件每次启动时自动显示在副显示器上,而不是默认出现在主屏幕左上角?单纯手动拖拽窗口并不可靠,需要从程序启动的源头入手,绕过系统的默认行为。具体来说,有两种可靠方法:一是修改快捷方式的目标路径并添加启动参数,二是使用PowerShell脚本强制将窗口移动到副屏。但前提是副屏编号必须固定为2,且物理布局与系统设置完全一致。

首先明确结论:手动拖拽窗口仅对部分程序有效,且可靠性较差。真正可靠的两种方法,下面将逐步详细讲解。
确认副屏编号与物理布局(基础设置)
这一步是基础。如果系统无法准确识别副屏编号,后续所有操作都会出错。请打开“设置 → 系统 → 显示”,点击“标识”按钮,副屏上会短暂显示数字(例如“2”)。如果无反应,说明编号未固定,需先检查线缆、信号源和显卡驱动。
在同一页面中,拖拽两个显示器的缩略图,使其左右/上下排列顺序与您桌面的物理摆放完全一致——确保鼠标从主屏右边缘移出后,能精准进入副屏左边缘,否则窗口位置计算会出现偏差。
【副屏编号必须为2或更高,不可为1】。Windows默认将最先识别的显示器设为1号主屏,后续识别的依次为2、3……如果副屏被标为1,主屏反而变成2,那么所有定向启动参数都会指向错误屏幕。
修改快捷方式目标路径并添加启动参数(稳定可靠)
这是最稳定且重启后依然生效的方法,适用于绝大多数桌面应用程序,例如Chrome、Notepad++、Photoshop等。
第一步:在桌面或开始菜单中找到该软件的快捷方式,右键点击并选择“属性”。
第二步:切换到“快捷方式”选项卡,将光标定位到“目标”文本框末尾最后一个引号的内侧,在引号后方输入一个空格,然后粘贴参数:-monitor 2(注意前面有空格,数字2必须与副屏实际编号一致)。
例如:原目标为 "C:\Program Files\Notepad++\notepad++.exe",修改后成为 "C:\Program Files\Notepad++\notepad++.exe" -monitor 2。
第三步:点击“确定”保存设置。此后双击该快捷方式启动程序时,窗口将强制显示在编号为2的显示器上。
使用PowerShell脚本强制移动窗口到副屏
部分程序不接受命令行参数(例如某些Java应用、旧版ERP客户端),或者您希望保留原始启动方式(如从开始菜单点击),但又要求100%在副屏打开。此时PowerShell脚本就能派上用场。
① 使用记事本新建一个文本文件,输入以下内容:
$proc = Start-Process "C:\Path\To\YourApp.exe" -PassThru
Start-Sleep -Milliseconds 300
$hwnd = $proc.MainWindowHandle
If ($hwnd -ne 0) {
$screen = [System.Windows.Forms.Screen]::AllScreens | Where-Object {$_.DeviceName -eq ".DISPLAY2"}
if ($screen) {
$pos = New-Object System.Drawing.Point($screen.Bounds.X, $screen.Bounds.Y)
[System.Windows.Forms.NativeMethods]::SetWindowPos($hwnd, 0, $pos.X, $pos.Y, 0, 0, 0x43)
}
}
② 将 C:\Path\To\YourApp.exe 替换为该软件的实际安装路径(例如 C:\Program Files\Microsoft VS Code\Code.exe)。
③ 将文件另存为 move-to-monitor2.ps1,然后右键点击文件,选择“使用PowerShell运行”。
④ 如果遇到执行策略受限提示,请以管理员身份打开PowerShell,执行命令:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,然后再次运行脚本。
手动拖拽并记住窗口位置(仅限部分程序)
对于不支持命令行参数的老旧软件或UWP应用(如邮件、天气),只能依靠系统记忆窗口位置。操作很简单:启动软件,将窗口拖动到副屏任意位置,调整好大小,然后关闭软件。Windows 11 会尝试记住此次位置。
但此方法相当不可靠:部分软件(尤其是全屏游戏、某些Java应用)会忽略历史位置;系统更新或显卡驱动重装后,记忆常被清空;副屏断开再重连时,位置大概率丢失。
【重要提示:关闭前不能最大化,也不能最小化,必须是普通窗口状态关闭】,否则系统不会保存坐标。
