【发布时间】:2012-12-29 10:59:07
【问题描述】:
我试图在启动时调用一个可执行文件,这将调用另一个可执行文件本身。对于第一部分,我只是将可执行文件的路径添加到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)
但是,当计算机启动时,会弹出一个命令外壳 (cmd)。一切正常,但它是可见的而不是隐藏的......所以基本上,我该如何隐藏这个命令外壳?
当使用ProcessExplorer 时,我有以下层次结构:
+ System
|_ Interrupts
|_ smss.exe
|_ some processes...
+ explorer.exe
|_ some processes...
|_ MYSCRIPT.EXE
这是我尝试实现的顺序:
- 我创建了一个 ISO 文件,其中包含我想在 VM 上运行的所有 Python 可执行文件。其中一个 (
master.exe) 呼叫其他人。 - 我创建了一个自动挂载后者的 VM
- 准备好的虚拟机有一个计划任务调用
D:\master.exe -
master.exe(以及其他我们不关心的任务)将值D:\myscript.exe添加到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run - VM 重新启动
-
D:\myscript.exe正在运行(并且它工作正常并且有人参与),但它确实在命令提示符下运行,我希望它是不可见的。
【问题讨论】:
-
一般来说,要隐藏进程窗口,我通过 vbscript(.run 方法) 运行它。但看起来,python 为您提供了一种原生方式。 :-)
标签: python windows cmd subprocess