我正在从我的 python 应用程序运行几个便携式应用程序。
考虑以下代码:
import win32com.shell.shell as w32shell
import os
import sys
import win32process as process
PORTABLE_APP_LOCATION = "C:\\Windows\\System32\\calc.exe"
#This function runs a portable application:
def runPortable():
try:
startObj = process.STARTUPINFO()
process.CreateProcess(PORTABLE_APP_LOCATION,None,None,None,8,8,None,None,startObj)
# OR
#w32shell.ShellExecuteEx(lpFile=PORTABLE_APP_LOCATION)
except:
print(sys.exc_info()[0])
runPortable()
1)我应该期望从 pythonw 或 python 执行此代码有什么不同吗?
2) 如果我更改为CDBurnerXP 便携式版本PORTABLE_APP_LOCATION
的路径并使用 ShellExecuteEx 选项而不是 CreateProcess,我会看到该进程在 Windows 任务管理器上启动,但应用程序的实际窗口不可见。其他 EXE 不会发生这种情况,例如在运行后出现的便携式GIMP版本。我认为这种差异来自可执行文件的属性。有谁知道这是什么原因造成的?
3) Windows 在什么条件下提示“您确定要运行此 EXE”?我相信 CDBurnerXP 是用证书签名的,但有时 Windows 在尝试从 python 中运行这个 EXE 时仍然会弹出这个问题。
非常感谢。