51 votes

Le paramètre caché du planificateur de tâches de Windows 7 ne fonctionne pas

J'ai un processus démon que je lance sur ma machine toutes les heures, et bien que j'aie vérifié le paramètre Hidden cela ne fonctionne pas. Task Properties

Toutes les heures, la tâche s'exécute, mais elle affiche la fenêtre de commande noire, dans laquelle mon application .NET Console est en cours d'exécution. Cette fenêtre reste visible jusqu'à la fin de la tâche, puis disparaît. C'est très ennuyeux, car elle apparaît et interrompt tout ce que je suis en train de faire :

enter image description here

Je veux vraiment qu'il soit caché, alors comment puis-je résoudre ce problème ?

1voto

Gabriel Glenn Points 295

Les deux :

  • Changer l'utilisateur qui exécute la tâche en SYSTEM"
  • et en vérifiant l'option "Exécuter si l'utilisateur est connecté ou non".

empêchera l'apparition de la fenêtre de commande noire, mais attention aux inconvénients : vous ne pourrez pas utiliser certains outils d'automatisation de l'interface graphique tels que 'AutoIt' ou SendKeys dans PowerShell, car Windows lance les tâches dans un environnement sans tête.

1voto

AresAvatar Points 111

Je laisse les paramètres par défaut et j'écris de courts programmes personnalisés qui lancent l'exécution sans qu'une fenêtre ne s'affiche. Par exemple, pour exécuter un fichier batch sans faire apparaître une fenêtre d'invite de commande, utilisez le code ci-dessous. Configurez la tâche pour qu'elle lance "RunBatchFile.exe (path_to_batch_file)".

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());
        }
    }
}

0voto

Berwin22 Points 1

Je rencontrais ce problème avec des tâches planifiées powershell (que je déployais via GPO). J'ai fini par les intégrer dans une fenêtre de commande :

CMD
/Q /D /C "powershell.exe -Command "& '\\MYDOMAIN\netlogon\MyPowerShellScript.ps1'""

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X