Divya B Nair Ответов: 2

Консольное приложение не запускается через планировщик задач, если установлено значение "при запуске"


Привет,

Я реализовал простое консольное приложение в C#.Net это записывает что-то в текстовый файл в "C:\MyFolder-как только он запустится. Я настроил приложение в планировщике задач со следующими свойствами.

Вкладка Общие->выполняется независимо от того, вошел пользователь в систему или нет.
Триггеры -> При запуске системы
Действия -> Program/Script = путь к моему exe-файлу ( E:\MyProject\Test.exe)
Start-in = путь с именем exe . (E:\MyProject)

Я ожидаю, что текстовый файл будет присутствовать, как только я запущу свою машину. То есть перед входом на рабочий стол, поскольку я установил свойство "при запуске системы", а не "при входе в систему" . Однако только если я войду в систему, мой exe-файл начнет работать, и файл будет скопирован. Это потому, что это консольное приложение, которое требует запуска рабочего стола/пользовательского интерфейса.?

Так как же будет обстоять дело на серверных машинах, где у нас нет логина пользователя или он входит в систему по умолчанию? Как я могу сделать свое консольное приложение lauch/ или работать в фоновом режиме даже до входа в систему/ где нет входа в систему?


Пожалуйста, уточните!!

Спасибо

Что я уже пробовал:

Я попробовал следующее

а) изменение свойства "при запуске задачи используйте следующую учетную запись пользователя" с моего входа по умолчанию в систему.
б) проверка опции - "запуск с наивысшими привилегиями".
c) создал файл .bat, который, в свою очередь, запускает консольное приложение. Однако это также не запускает мое консольное приложение через планировщик задач.

2 Ответов

Рейтинг:
2

Dave Kreskowiak

Консольные приложения не нуждаются в входе пользователя в систему для запуска.

Перепишите приложение, чтобы перехватывать и регистрировать ошибки в файле в C:\Windows\Logs-да. Кроме того, просто регистрируйте запуск и другие сообщения diag в файле, а не только ошибки.

Кое-что нужно проверить...

Какая учетная запись настроена для запуска приложения из планировщика задач? Это должна быть локальная система
или система.

Делает ли это C:\MyFolder путь существует до того, как вы попытаетесь создать этот текстовый файл?

Е: - это сетевой диск? Если так, то это не сработает. Вы должны использовать UNC-пути, так как сопоставления дисков не будут существовать. Кроме того, системная учетная запись не будет иметь прав доступа к общей папке.


Divya B Nair

Похоже, что консольное приложение не запускается без входа на рабочий стол. Я указал errorDirPath на C:\Windows\Logs. Но все равно текстовый файл не генерируется, содержащий текст "запущенное приложение". Ниже приведен фрагмент кода.

static void Main(string[] args)
{
ВАР errorDirPath = диспетчер конфигураций.Параметр Appsettings["ErrorLogPath"];
пробовать
{
если (!Directory.Exists(errorDirPath))
Каталог.CreateDirectory(errorDirPath);
errorLogPath = errorDirPath + "\\" + "_Log.txt";
Файл.AppendAllText(errorLogPath, "запуск приложения");

Приставка.Линия чтения();
}
поймать (исключение бывший)
{
Файл.AppendAllText(errorLogPath, "не удалось загрузить приложение" + ex.сообщение.Метод toString());
}
}

Приложение настроено для запуска под системной учетной записью в планировщике задач. Кроме того, я запускаю exe-файл, который присутствует на моем локальном диске.

Рейтинг:
1

codejet

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


Divya B Nair

Работает ли служба даже без входа на рабочий стол. ? Я имею в виду при запуске самого себя.

Dave Kreskowiak

Как насчет того, чтобы запустить -> Run -> Services.msc и узнать, сколько служб запущено, прежде чем вы даже войдете в систему.

Divya B Nair

Чтобы проверить это, я должен войти в Windows и перейти на рабочий стол. Как я могу определить, какая из этих служб (находящихся в рабочем состоянии) запустилась после того, как я вошел в свою машину? Я хочу запустить свое консольное приложение после запуска компьютера, но перед входом в систему с помощью учетных данных windows.

Dave Kreskowiak

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

Если служба настроена на "автоматический" или "автоматический (отложенный запуск)", она запускается вместе с Windows.