Подтвердить что ты не робот

Как запустить консольное приложение .NET в фоновом режиме

У меня есть консольное приложение, написанное на С#, которое планируется запустить каждые 15 минут или около того с помощью встроенного планировщика задач Windows.

Каждый раз, когда он запускается, черная консольная панель появляется на время ее выполнения, а затем закрывается. Я ничего не пишу на консоль. Есть ли способ сделать этот запуск в фоновом режиме?

4b9b3361

Ответ 1

Легко!

Кажется, трудно поверить, но это работает как прелесть. Я использовал это для некоторых проектов установки, когда вы хотите выполнять пользовательские задачи без каких-либо признаков.

  • Создайте проект как проект приложения Windows (это сложная часть).
  • Никогда не звоните в какую-либо форму. Просто продолжайте точно так же, как в консольном приложении

    class Program
    {
        static void Main(string[] args)
        {
            // Just don't call Application.Run(new frmMain(args));
    
            // ... your code
        }
     }
    

Это связано с тем, что проекты приложений Windows не отличаются от консоли, за исключением первой формы и ссылок. Это полностью скрытое исполнение. Попробуйте!

Ответ 2

Проект > Свойствa > вкладка "Приложение" > измените тип вывода на "приложение Windows".

Больше нет окна консоли.

Ответ 3

Как реализовать приложение в службе Windows? Вы можете установить интервал до 15 минут и запустить операцию в timer_tick.

Ответ 4

Вы можете использовать Windows API для минимизации поля консоли. В противном случае вы можете сделать его файлом Windows EXE, который фактически не загружает форму и вызывает System.Windows.Forms.Application.Run().

Код для минимизации консоли:

[DllImport( "user32.dll" )]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

public const int SW_SHOWMINIMIZED = 2;

IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(winHandle, SW_SHOWMINIMIZED);

Ответ 5

Если у вас уже создано приложение Windows Console, вы можете просто изменить тип вывода вашего приложения на приложение Windows.

В рамках вашего проекта: Перейдите в меню Свойствa > Приложение Выберите "Приложение Windows" в качестве типа вывода.

Это будет наименьшее влияние, и вы можете сохранить планировщик задач Windows с той же задачей.

Ответ 7

Он будет отображаться только в том случае, если он будет запущен в качестве того же пользователя, который в настоящий момент вошел в систему. Создайте еще одного пользователя на машине со смешным длинным паролем, установите его как администратор (только при необходимости) и запланируйте задачу запускается как этот пользователь.

Ответ 8

Грязный как-то там, но (отсюда):

Процесс занимает 3 файла. launch.bat, invis.vbs и (ваш программа). В файле launch.bat(этот файл запускается ваша программа тихо), введите wscript.exe "C:\yourpath\invis.vbs" "your file.bat". В invis.vbs, положить в

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

И, наконец, в вашем файле launch.bat поставьте все, что угодно хотите...

echo off erase c:\junk.txt. Ну, ты сделанный. Просто откройте launch.bat.

Он работает как шарм. Он запускает первую летучую мышь (launch.bat), которая, в свою очередь, запускает ваш сервис/исполняемый файл скрытно. Таким образом, это быстрый снимок для первоначального запуска, а затем ушел.

Ответ 9

Это легко. Задайте задачу для запуска под учетной записью, которая не является вашей учетной записью.