
Nach dem Erstellen einer geplanten Aufgabe nach dem Befolgendiese Superuser-Fragekann ich einen Dienst ohne UAC-Eingabeaufforderung erfolgreich starten. Die ausgewählten Optionen waren:
Start a program
Program\script
=C:\Windows\System32\net.exe
Add arguments (optional)
=start "SERVICE-NAME"
Dann rufe ich in einer Batchdatei auf schtasks /run /tn TASK-NAME
. Nachdem ich dies getestet hatte, erstellte ich eine Verknüpfung zur Batchdatei und setzte die Run
Option auf Minimised
.
Dies funktioniert alles, außer dass beim Starten des eigentlichen Dienstes ein maximiertes Eingabeaufforderungsfenster mit der einzelnen Zeile angezeigt wird The SERVICE-NAME service is starting
. Dieses verschwindet dann nach einigen Sekunden.
Wie weise ich den Taskplaner an, das Zielprogramm stillschweigend (oder minimiert) ohne das Popup zu starten? Wenn die Popup-Eingabeaufforderung minimiert wäre, wäre das kein Problem.
Antwort1
Das Problem besteht darin, dass Sie, wenn Sie die Verknüpfung so konfigurieren, dass sie minimiert ausgeführt wird, nur das Programm minimieren, das die geplante Aufgabe startet, nicht das Programm, das die Aufgabe ausführt. Sie benötigen ein weiteres Teil in der Startsequenz Ihrer Rube-Goldberg-Maschine. Nehmen Sie die folgenden Änderungen vor:
Program\script
=C:\Windows\System32\cmd.exe
Add arguments (optional)
=/c start /min net start "SERVICE-NAME"
Der erste „Start“ ist der cmd.exe
start
Befehl, den wir für zwei Funktionen verwenden:
- Start
net.exe
minimiert. - Beenden Sie
taskeng.exe
es sofort nachnet.exe
dem Start, anstatt zu warten, bis es fertig ist.
Beachten Sie, dass diese Lösung nicht perfekt ist, da taskeng.exe
es bis zum Start kurz aufblinkt net.exe
, aber normalerweise weniger als eine Sekunde.
Antwort2
Sie können einen Dienst (oder ein anderes Programm) starten, ohne dass ein Fenster überhaupt blinkt.nicht einmal minimiert.
Erstellen Sie eine Aufgabe:
- Befehl/Skript:
mshta.exe
- Argumente hinzufügen (optional):
"javascript: new ActiveXObject('shell.application').ShellExecute('net.exe', 'start <SERVICE-NAME>', '', 'open', 0); close();"
Da Sie einen Dienst starten möchten, benötigen Sie Administratorrechte. Überprüfen Sie daherMit höchsten Berechtigungen ausführenauf der ersten Registerkarte.
Um die Aufgabe auszuführen, ohne ein Fenster anzuzeigen, verwenden Sie den gleichen Trick. Erstellen Sie eine Verknüpfung mit dem folgenden Befehl:
mshta.exe "javascript: new ActiveXObject('shell.application').ShellExecute('schtasks.exe', '/run /tn <TASK-NAME>', '', 'open', 0); close();"
Anmerkungen
- Der Benutzer, der die Verknüpfung ausführt, muss ein Administrator sein, da normale Benutzer nur ihre Aufgaben ausführen können und diese Aufgabe die mit den höchsten Berechtigungen ist. Andernfalls
schtasks
schlägt der Befehl mit der Meldung „Zugriff verweigert“ fehl. - Wenn sich die Aufgabe in einem Aufgabenordner befindet,
/tn <TASK-NAME>
ist dies/tn <FOLDER>\<TASK>
von der Shell, und Sie müssenVerdoppeln Sie den Backslashum es immshta
Befehl der Verknüpfung zu entkommen. - Einige Antivirenprogramme (zumindest Kaspersky) betrachten eine auf
mshta
diese Weise ausgeführte Aufgabe möglicherweise als verdächtig oder als potenzielles Risiko und löschen sie daher. - Mit diesem Trick können Sie jedes Programm versteckt ausführen, ohne dass es überhaupt angezeigt wird. Ersetzen Sie einfach
net.exe
durch den Namen Ihres Programms und denstart <SERVICE-NAME>
Teil mit den benötigten Parametern.
Antwort3
Bei mir funktioniert nur das, Windows 11