我正在从python应用程序运行几个便携式应用程序。考虑以下代码:import win32com.shell.shell as w32shellimport osimport sysimport win32process as processPORTABLE_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)如果我更改PORTABLE_APP_LOCATION为CDBurnerXP便携式版本的路径,并使用ShellExecuteEx选项而不是CreateProcess,则可以看到该进程已在Windows Task Manager上启动,但该应用程序的实际窗口不可见。对于其他EXE(例如GIMP的便携式版本),在运行后确实会出现这种情况。我认为这种差异来自可执行文件的属性。有人知道是什么原因造成的吗?3)Windows在什么条件下提示“您确定要运行此EXE”?我相信CDBurnerXP已使用证书签名,但是当尝试从python内部运行此EXE时,Windows仍然有时会弹出此问题。
2 回答

慕斯王
TA贡献1864条经验 获得超2个赞
关于第一个问题,您应该注意,使用pythonw.exe运行时执行python代码时,您的sys.stdout缓冲区限制为4096字节,并且在溢出时将抛出IOError,因为代码正在无窗口运行,因此您将看不到IOError。
添加回答
举报
0/150
提交
取消