如何通过命令行调用UWP应用打开指定格式文件(以3D Builder打开.3mf文件为例)
如何通过命令行调用UWP应用打开指定格式文件(以3D Builder打开.3mf文件为例)
你遇到的问题其实是UWP应用的特性导致的——直接运行UWP包里的.exe文件(比如Builder3D.exe)并不能正确接收命令行参数,因为这些exe只是UWP应用的启动入口,真正的应用逻辑是通过系统的应用激活机制来处理参数的。下面给你几个直接可行的方案:
方法一:使用CMD的start命令
这是最直接的命令行方式,你只需要知道3D Builder的AUMID(应用用户模型ID),然后结合文件路径来启动:
start "" "shell:AppsFolder\Microsoft.3DBuilder_8wekyb3d8bbwe!App" "C:\你的文件路径\example.3mf"
- 注意:文件路径一定要用完整路径,并且如果路径里有空格,必须用双引号包裹。
- 如果不确定AUMID是否正确,可以在PowerShell里运行
Get-StartApps | Where-Object {$_.Name -like "*3D Builder*"},就能看到对应应用的AUMID,避免因为版本更新导致的路径变化问题。
方法二:使用PowerShell命令
如果你习惯用PowerShell,也可以用以下两种方式:
- 用
Start-Process命令:
Start-Process -FilePath "shell:AppsFolder\Microsoft.3DBuilder_8wekyb3d8bbwe!App" -ArgumentList "C:\你的文件路径\example.3mf"
- 更简洁的直接调用方式:
& "shell:AppsFolder\Microsoft.3DBuilder_8wekyb3d8bbwe!App" "C:\你的文件路径\example.3mf"
为什么直接运行Builder3D.exe没用?
UWP应用和传统桌面程序的启动机制不一样,包里的.exe只是一个轻量级的启动器,它不会直接处理你传入的命令行参数,必须通过Windows的shell激活机制(也就是上面用到的shell:AppsFolder路径+AUMID)来传递文件参数,这样系统才会正确触发UWP应用的文件激活事件,让3D Builder加载你指定的.3mf文件。
对你的UWP应用的建议
在你自己的应用里,当用户选择用3D Builder打开文件时,你只需要通过代码调用上面的命令即可(比如用C#的Process.Start执行CMD命令,或者直接调用PowerShell命令),这样就能实现让用户一键用3D Builder打开目标.3mf文件的需求。
备注:内容来源于stack exchange,提问作者Codrut




