Windows 10下如何让UWP应用开机自动在前台运行?
解决Windows 10 UWP应用开机自动前台置顶运行的问题
这个问题我之前帮不少人解决过——UWP应用默认的开机启动机制确实只能让它在后台激活,微软这么设计是为了避免开机时一堆弹窗打扰用户。要让它自动跑到前台并置顶,得绕个弯,用系统自带的工具配合脚本实现,下面给你两个靠谱的方案:
方案1:任务计划程序 + PowerShell脚本(推荐)
这个方案完全依赖系统自带工具,不需要第三方软件,稳定性高。
步骤1:获取UWP应用的AUMID(应用用户模型ID)
这是启动UWP应用的唯一标识,获取方法:
- 按下Win+X,打开Windows PowerShell(管理员身份打开也可以)
- 执行命令:
Get-StartApps
- 在输出列表里找到你的目标应用,复制它的
ID字段(看起来像Microsoft.WindowsCalculator_8wekyb3d8bbwe!App这样的字符串)
步骤2:编写PowerShell脚本
新建一个文本文件,把下面的代码粘贴进去,然后替换你的AUMID和应用窗口标题,最后保存为LaunchUWPForeground.ps1(注意后缀是.ps1):
# 启动目标UWP应用 Start-Process "shell:AppsFolder\你的AUMID" # 等待应用完全启动(根据应用启动速度调整秒数,比如5秒,慢的应用可以设10秒) Start-Sleep -Seconds 5 # 调用Win32 API将窗口置顶 Add-Type @" using System; using System.Runtime.InteropServices; public class Win32 { [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); } "@ # 替换为你的应用窗口标题(比如"计算器"),UWP窗口类名一般是ApplicationFrameWindow $hwnd = [Win32]::FindWindow("ApplicationFrameWindow", "应用窗口标题") # 如果找到窗口句柄,就将它置顶到前台 if ($hwnd -ne [IntPtr]::Zero) { [Win32]::SetForegroundWindow($hwnd) }
提示:如果不知道应用窗口标题,可以打开应用后,在PowerShell里执行
Get-Process | Where-Object {$_.MainWindowTitle -ne ""},找到对应进程的MainWindowTitle字段。
步骤3:创建任务计划程序任务
- 按下Win+S,搜索并打开任务计划程序
- 点击右侧的创建基本任务,按照向导操作:
- 名称:随便填(比如“开机启动UWP应用到前台”),描述可选
- 触发器:选择当我登录时,点击下一步
- 操作:选择启动程序,点击下一步
- 程序或脚本:填
powershell.exe - 添加参数(可选):填
-ExecutionPolicy Bypass -File "你保存的脚本路径.ps1"(比如-ExecutionPolicy Bypass -File "C:\Scripts\LaunchUWPForeground.ps1") - 点击完成,然后在任务列表里找到刚创建的任务,右键选择属性
- 在属性窗口里做以下设置:
- 勾选不管用户是否登录都要运行
- 勾选使用最高权限运行(避免权限不足无法激活窗口)
- 切换到触发器标签,双击登录触发器,勾选延迟任务时间(比如10秒,避免和系统开机的其他进程抢资源)
设置完成后,重启电脑测试效果即可。
方案2:VBScript + 任务计划程序(更简洁)
如果你觉得PowerShell脚本太复杂,可以用VBScript实现,步骤类似:
步骤1:获取AUMID(和方案1一样)
步骤2:编写VBScript脚本
新建文本文件,粘贴下面代码,替换你的AUMID和应用窗口标题,保存为LaunchUWPForeground.vbs:
Set objShell = CreateObject("WScript.Shell") ' 启动UWP应用 objShell.Run "shell:AppsFolder\你的AUMID" ' 等待应用启动(单位是毫秒,5000=5秒) WScript.Sleep 5000 ' 激活并置顶应用窗口 objShell.AppActivate "应用窗口标题"
步骤3:创建任务计划
和方案1的步骤3类似,只是操作里的程序或脚本填wscript.exe,添加参数填"你保存的脚本路径.vbs"(比如"C:\Scripts\LaunchUWPForeground.vbs"),同样要勾选最高权限和延迟任务时间。
注意事项
- 等待时间调整:不同应用启动速度不一样,如果脚本执行时窗口还没加载出来,会导致置顶失败,所以要根据实际情况调整
Start-Sleep或WScript.Sleep的时间。 - 窗口标题变化的情况:如果应用窗口标题是动态的(比如带文件名、未读消息数),可以改用进程名获取窗口句柄。比如在PowerShell脚本里,把找窗口的代码换成:
$process = Get-Process "应用进程名" # 比如计算器是Calculator if ($process -ne $null) { [Win32]::SetForegroundWindow($process.MainWindowHandle) } - 权限问题:必须勾选任务计划的“最高权限运行”,否则Windows的前台窗口保护机制会阻止脚本激活窗口。
内容的提问来源于stack exchange,提问作者alexmark
相关产品推荐
相关产品推荐

