如何使用 python 脚本打开 Windows 10 应用程序?
Posted
技术标签:
【中文标题】如何使用 python 脚本打开 Windows 10 应用程序?【英文标题】:How can I open a Windows 10 app with a python script? 【发布时间】:2017-09-27 13:09:16 【问题描述】:因此,您可能知道 Windows 上的某些应用可以从应用商店安装,并且被归类为 Windows 受信任的应用。我不确定,但我认为这些不使用经典的 .exe 格式。所以我正在编写一个 python 脚本来在我启动我的电脑时自动化一些东西,我需要启动某个 Windows 应用程序,但我不知道该怎么做,因为我不知道我需要开始做什么所以,我也不知道这些文件在哪里。有人可以帮忙吗?
【问题讨论】:
从虚拟shell:appsfolder
中手动创建一个shell 快捷方式并让您的脚本通过os.startfile
运行它是否足够?或者您是否需要完全自动查找应用程序的 IDList
以便 shell 执行它?
@eryksun 我遇到的问题是我完全不知道文件的实际位置...
您不应该通过可执行文件引用这些应用程序。最终会有一种或另一种——通常在隐藏系统文件夹%ProgramFiles%\WindowsApps
的子目录中。某些应用程序支持 URL 协议,例如 bingnews:
,您可以在 Explorer 或 cmd 的 start
中使用该协议。否则,您需要应用程序用户模型 ID (AUMID) 才能与IApplicationActivationManager
COM 接口一起使用。如果您从shell:appsfolder
中的某个应用程序在桌面上创建快捷方式(即.lnk 文件),它包含AUMID,您可以使用os.startfile
运行快捷方式。
@eryksun 感谢您的回复和解释!
【参考方案1】:
import os
os.system('start D:\\bharat\\sqldeveloper.exe')
对于 Windows cmd,此 [start path/app.exe] 将打开应用程序
所以只需使用所需文件的exe的完整路径(确保在编写python脚本时在路径中使用\\
)
【讨论】:
命令start D:\\bharat\\sqldeveloper.exe
在Win10 CLI上不起作用,只能在Powershell上运行,即使这样,你也必须先运行start
,然后再运行D:\\bharat\\sqldeveloper.exe
。另一个问题是os.system()
不是推荐的方法。更好的选择是subprocess.call()
来生成一个新进程。最后,在 Python3 中,当真正的字符串以r
开头时,不需要双斜杠,如r'D:\bharat\sqldeveloper.exe'
。这使语法尽可能接近 bash,因此无需转义正斜杠。【参考方案2】:
最后,我找到了一种运行通过 Windows 应用商店下载或预装的 Windows 通用应用程序的方法。
每个 Windows 10 通用应用都有一个 AUMID
,它代表“应用程序用户模型 ID”。
PowerShell获取所有AUMID的命令:
get-StartApps
输出:
PS C:\> get-StartApps Name AppID ---- ----- Skype Microsoft.SkypeApp_kzf8qxf38zg5c!App Snip & Sketch Microsoft.ScreenSketch_8wekyb3d8bbwe!App Mail microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.w... Calendar microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.w... Movies & TV Microsoft.ZuneVideo_8wekyb3d8bbwe!Microsoft.ZuneVideo OneNote for Windows 10 Microsoft.Office.OneNote_8wekyb3d8bbwe!microsoft.onenoteim Photos Microsoft.Windows.Photos_8wekyb3d8bbwe!App Video Editor Microsoft.Windows.Photos_8wekyb3d8bbwe!SecondaryEntry Maps Microsoft.WindowsMaps_8wekyb3d8bbwe!App Alarms & Clock Microsoft.WindowsAlarms_8wekyb3d8bbwe!App Voice Recorder Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe!App Feedback Hub Microsoft.WindowsFeedbackHub_8wekyb3d8bbwe!App Xbox Game Bar Microsoft.XboxGamingOverlay_8wekyb3d8bbwe!App Camera Microsoft.WindowsCamera_8wekyb3d8bbwe!App Microsoft Store Microsoft.WindowsStore_8wekyb3d8bbwe!App Weather Microsoft.BingWeather_8wekyb3d8bbwe!App Cortana Microsoft.549981C3F5F10_8wekyb3d8bbwe!App Instagram Facebook.InstagramBeta_8xx8rvfyw5nnt!Instagram ...
所以现在,您可以像这样通过其 AUMID 启动任何通用应用程序:
explorer shell:appsfolder\[AUMID]
例如,如果你想执行Skype
:
explorer shell:appsfolder\Microsoft.SkypeApp_kzf8qxf38zg5c!App
现在是时候回到 Python:
>>> import os
>>> os.system('start explorer shell:appsfolder\Microsoft.BingWeather_8wekyb3d8bbwe!App')
Windows Weather
应用程序将执行。
快乐编码
【讨论】:
这太棒了。【参考方案3】:万一其他人遇到这个问题:
您可以使用以下语法在 cmd 中启动大多数 Windows 应用程序:
start [program]:
例如:
start Netflix:
记住这一点,移植到 pythn 只需使用以下代码:
import os
os.system('start Netflix:')
替换为您选择的程序,瞧 :)
【讨论】:
这不起作用。不能像这样从 cmd 运行 Windows 10 应用程序。我试过 Instagram。 这不适用于某些应用,如相机、照片等【参考方案4】:您可以使用这种称为 winapps 的新技术,用于搜索、修改和卸载应用程序。它在cmd windows上的下载命令是pip install winapps
。
【讨论】:
以上是关于如何使用 python 脚本打开 Windows 10 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章