Ich habe einen Daemon-Prozess, den ich stündlich auf meinem Rechner ausführe, und obwohl ich das Hidden
Kontrollkästchen aktiviert habe, funktioniert er nicht.
Die Aufgabe wird stündlich ausgeführt, zeigt aber das schwarze Befehlsfenster an, in dem meine .NET-Konsolenanwendung ausgeführt wird. Dieses bleibt sichtbar, bis die Aufgabe abgeschlossen ist, und verschwindet dann. Das ist sehr ärgerlich, weil es auftaucht und mich bei allem unterbricht, was ich gerade tue:
Ich möchte es wirklich verbergen. Wie kann ich das beheben?
Antwort1
Aktivieren Sie das Kontrollkästchen „Ausführen, unabhängig davon, ob der Benutzer angemeldet ist oder nicht“ und die ausführbare Datei wird im Hintergrund ausgeführt.
Antwort2
Warum werden geplante Aufgaben in Windows 7 ausgeblendet ausgeführt?sollte erklären, warum dies passiert.
Auch,diese TechNet-Beschreibung vonAllgemeine AufgabeneigenschaftenZustände:
Die allgemeinen Eigenschaften einer Aufgabe werden auf der Registerkarte Allgemein des Dialogfelds Aufgabeneigenschaften oder Aufgabe erstellen angezeigt. Zu den allgemeinen Eigenschaften einer Aufgabe gehören der Aufgabenname, der Autor, die Beschreibung, die Sicherheitsoptionen, das Betriebssystem, für das die Aufgabe konfiguriert ist,und eine Eigenschaft, die steuert, ob die Aufgabe ausgeblendet ist.
Wenn Sie eine Aufgabe in einem Aufgabenordner erstellen, müssen Sie der Aufgabe einen Namen geben. Zwei Aufgaben im selben Aufgabenordner dürfen nicht denselben Namen haben. Die Aufgabenbeschreibung ist optional.
Tasksicherheitsoptionen geben den Sicherheitskontext an, unter dem die Aufgabe ausgeführt wird. Weitere Informationen finden Sie unter Tasksicherheitskontext.
Standardmäßig werden ausgeblendete Aufgaben nicht in der Benutzeroberfläche der Aufgabenplanung angezeigt. Sie können ausgeblendete Aufgaben anzeigen, wenn im Menü „Ansicht“ die Option „Ausgeblendete Aufgaben anzeigen“ ausgewählt ist. Sie blenden eine Aufgabe aus, indem Sie das Kontrollkästchen Ausgeblendet auf der Registerkarte Allgemein des Dialogfelds „Aufgabeneigenschaften“ oder „Aufgabe erstellen“ aktivieren.
Bedeutet das nicht, dass das Kontrollkästchen nurdie Aufgabe selbstvon der Benutzeroberfläche des Planers und nicht vom eigentlichen geplanten Programm?
Antwort3
Okay, nach etwas mehr Recherche fand ichdiese Antwortauf StackOverflow:
Um eine geplante Aufgabe so einzurichten, dass sie im Hintergrund ausgeführt wird, ändern Sie den Benutzer, der die Aufgabe ausführt, in SYSTEM. Anschließend wird auf Ihrem Bildschirm nichts angezeigt.
Ein Kommentarweist darauf hin, dass dadurch der Aufgabe Vollrechte erteilt werden, was zwar ärgerlich sein könnte, in diesem Fall jedoch akzeptabel ist.
Aber was Hidden
macht es, wenn es das nicht tut? Und warum sollte das Benutzerkonto, unter dem das Programm ausgeführt wird, etwas damit zu tun haben, ob es sichtbar ist?
Antwort4
Ich lasse die Standardeinstellungen und schreibe kurze benutzerdefinierte Programme, die die Ausführung starten, ohne dass ein Fenster angezeigt wird. Um beispielsweise eine Batchdatei auszuführen, ohne dass ein Eingabeaufforderungsfenster angezeigt wird, verwenden Sie den folgenden Code. Stellen Sie die Aufgabe so ein, dass „RunBatchFile.exe (Pfad_zur_Batchdatei)“ gestartet wird.
class Program
{
static void Main(string[] args)
{
try
{
if (args.Length < 1)
{
Console.WriteLine("No batch file");
Console.WriteLine("Usage: RunBatchFile (path)");
Environment.Exit(1);
}
if (!File.Exists(args[0]))
{
Console.WriteLine("Batch file {0} not found", args[0]);
Console.WriteLine("Usage: RunBatchFile (path)");
Environment.Exit(1);
}
// Set to batch file's folder
string startIn = Path.GetDirectoryName(args[0]);
if (!string.IsNullOrEmpty(startIn) && Directory.Exists(startIn))
Directory.SetCurrentDirectory(startIn);
// Start
ProcessStartInfo pi = new ProcessStartInfo()
{
FileName = args[0],
UseShellExecute = true,
WindowStyle = ProcessWindowStyle.Hidden
};
Process.Start(pi);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.ToString());
}
}
}