Ich versuche, eine ausführbare Datei beim Start aufzurufen, die eine andere ausführbare Datei selbst aufrufen wird. Für den ersten Teil habe ich einfach den Pfad zur ausführbaren Datei HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
hinzugefügt, was funktioniert, meine ausführbare Datei wird beim Start aufgerufen.Subprocess.Popen(): verstecken Sie die Shell cmd
Letztere enthält unter anderem die folgenden Zeilen:
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE
proc = subprocess.Popen(command, startupinfo=startupinfo)
jedoch eine Eingabeaufforderung (CMD) erscheint, wenn der Computer gestartet wird. Alles funktioniert gut, aber es ist sichtbar statt versteckt ... Also, wie verberge ich diese Kommandozeile?
Wenn ProcessExplorer
mit, ich habe die folgende Hierarchie:
+ System
|_ Interrupts
|_ smss.exe
|_ some processes...
+ explorer.exe
|_ some processes...
|_ MYSCRIPT.EXE
Dies ist die Folge ich versuche zu erreichen:
alle- Ich erstelle eine ISO-Datei enthält, die Python-Executable I ausgeführt werden soll auf der VM. Einer von ihnen (
master.exe
) ruft die anderen an. - ich eine VM erstellen, die automatisch die letztere
- Die VM montieren, die vorbereitet wurde, hat eine geplante Aufgabe, die
D:\master.exe
master.exe
(unter anderen Aufgaben, die hier nicht unsere Sorge sind) nennt addiert den WertD:\myscript.exe
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- Die VM wird neu gestartet
D:\myscript.exe
wird ausgeführt (und es funktioniert gut und wie besucht), aber es wird in einer Eingabeaufforderung ausgeführt, die ich gerne unsichtbar sein würde.
Als allgemeine Regel gilt, ein Prozessfenster zu verbergen, ich laufe es über vbscript (.run Methode). Aber Python bietet Ihnen einen nativen Weg. :-) – anishsane
verwandt: [Wie verbirg ich die Konsole, wenn ich os.system() oder subprocess.call() verwende?] (Http://stackoverflow.com/q/7006238/4279) – jfs