Subprocess.Popen():隐藏cmd shell

6 python windows subprocess cmd

我试图在启动时调用可执行文件,它将调用另一个可执行文件本身.对于第一部分,我只是添加了可执行文件的路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,其工作原理,我的可执行文件在启动时被调用.

后者包含以下这些内容:

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE
proc = subprocess.Popen(command, startupinfo=startupinfo)
Run Code Online (Sandbox Code Playgroud)

但是,计算机启动时会弹出命令shell(cmd).一切正常,但它是可见的而不是隐藏的...所以基本上,我如何隐藏这个命令shell?

使用时ProcessExplorer,我有以下层次结构:

+ System
|_ Interrupts
|_ smss.exe
    |_ some processes...
+ explorer.exe
    |_ some processes...
|_ MYSCRIPT.EXE
Run Code Online (Sandbox Code Playgroud)

这是我尝试实现的顺序:

  • 我创建了一个ISO文件,其中包含我想在VM上运行的所有Python可执行文件.其中一个(master.exe)调用其他人.
  • 我创建了一个自动挂载后者的VM
  • 准备好的VM有一个调用的计划任务 D:\master.exe
  • master.exe(这是不是在这里我们所关心的其他任务)增加值D:\myscript.exeHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • VM重新启动
  • D:\myscript.exe 运行(并且它工作正常并且有效),但它确实在命令提示符下运行,我希望它是不可见的.

Tho*_*anz 5

这是 Python 程序员遇到的一个典型问题 - 因此,Python 本身提供了一个解决方案。它已经被问过很多次了,例如,这里,但对你来说,问题有点复杂。

这完全取决于您是否使用python.exepythonw.exe运行脚本。对于第一个,控制台会打开,而对于第二个则不会。

当您使用编译的脚本时,您必须告诉“编译器”您要使用哪个版本。假设您正在使用 py2exe,您可以查看SO 上的这篇文章。这里详细解释了如何进行。


归档时间:

查看次数:

7425 次

最近记录:

7 年,8 月 前