C# запуск скрытого процесса. Запуск программы в скрытом режиме

Достаточно часто требуется запустить программу в фоновом режиме, без видимого отображения окон, которые могут мешать работе в видимом режиме.

Для примера, запустим программу для rclone для резервного копирования информации на сервер в режиме синхронизации.

using System.Diagnostics;

Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName = @"rclone.exe";
p.StartInfo.Arguments = @"sync C:\backup\ remote_server:/home/user/backup";
p.Start();

Кроме этого возможно скрыть не только саму программу, но и наше приложение запускающее эту программу сделать невидимым, например для использования в других скриптах. Для этого создаем новое windows приложение работающее в оконном режиме.

Во время загрузки формы добавляем следующий код

private void Form1_Load(object sender, EventArgs e)
        {
            Visible = false;
            ShowInTaskbar = false;
        }

Скрываем форму и не показываем его на панели задач.

Не забываем закрыть приложение, если сделали его невидимым, после выполнения необходимых действий.

System.Windows.Forms.Application.Exit();

Использование для скрытия FormWindowState.Minimized минимизируя окно с отключеным отображением в панели и прозрачности Opacity для визуального исчезновения окна не решает вопрос скрытия, т.к. при некоторых сценариях окно будет видимым у пользователя. Например отображение по alt + tab, использование сторонних оболочек и дополнений.