【发布时间】:2019-09-29 23:06:33
【问题描述】:
如何通过C:\Program Files\WindowsApps\some_app_folder\*.exe 内部的powershell 打开可执行文件?
当我运行以下 powershell 命令时:
Start-Process -FilePath '.\Calculator.exe'
#full path example: C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_10.1903.21.0_x64__8wekyb3d8bbwe\Calculator.exe
我收到此错误:“此命令由于错误而无法运行:访问被拒绝”
观察:
- 如果我在 Windows 搜索中搜索
Calculator并按 Enter,我可以通过 Windows 搜索以这种方式打开应用程序。
有没有办法让我以可以打开此文件的其他用户身份运行该进程?
手动解决方法:
我可以通过查看每个 Windows 应用程序C:\Program Files\WindowsApps\some_app\AppxManifest.xml file 来获取从每个 Windows 应用程序启动应用程序的特定 URI 快捷方式。例如,我可以通过这种方式启动一些 Windows 应用程序:
# Powershell ...you can also run this inside "Run as" without `Start-Process
Start-Process calculator:
Start-Process ms-photos:
Start-Process Spotify:
但我试图避免这种情况,只使用.exe 文件。 grepping 每个清单不会很好地工作,因为AppxManifest 可以定义几个甚至多达十几个用于启动应用程序的 URI 快捷方式(一些转到应用程序中的不同页面)。例如,Windows 天气应用具有:
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="msnweather"/>
</uap:Extension>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="bingweather"/>
</uap:Extension>
我需要在我的脚本中手动创建要保留或排除的 URI 快捷方式的黑名单。
目标:
- 我只想打开 Windows 应用程序的
.exe文件,希望不更改用户的注册表文件。
我的用例:
我正在收集每个 Windows 应用程序的每个 .exe 文件的路径,以便以后创建一个 Windows 应用程序列表以在应用程序中显示给用户。然后,用户将能够单击该应用程序并打开它的关联 .exe 文件。
【问题讨论】:
-
这有效:
explorer.exe shell:appsFolder\Microsoft.BingWeather_8wekyb3d8bbwe!App在这里查看如何生成这个:answers.microsoft.com/en-us/windows/forum/…
标签: windows powershell cmd powershell-4.0 permission-denied