Сервис не перехватывает события SessionChange - PullRequest
0 голосов
/ 23 мая 2018

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

Это события, которые я хочу регистрировать:

  • Запуск компьютера РАБОТА
  • Блокировка сеанса
  • Разблокировка сеанса
  • Выключение компьютера РАБОТА

Я трижды проверил, что мойсервис может перехватить эти события (я даже установил все CanHandle .. в true ..

private void InitializeComponent()
{
    // 
    // Service1
    // 
    this.CanHandlePowerEvent = true;
    this.CanHandleSessionChangeEvent = true;
    this.CanPauseAndContinue = true;
    this.CanShutdown = true;
    this.ServiceName = "TimeToGoService";
}

Это мой переопределенный OnSessionChange ()

protected override void OnSessionChange(SessionChangeDescription changeDescription)
{
    if (changeDescription.Reason == SessionChangeReason.SessionLock)
    {
        startBreak();
    }
    else if (changeDescription.Reason == SessionChangeReason.SessionUnlock)
    {
        endBreak();
    }

    base.OnSessionChange(changeDescription);
}

startBreak () и endBreak () записывают журналы только в файл с помощью StreamWriter.

При поиске в Интернете я видел некоторых людейиспользование скрытой формы для запуска этих событий. В этом проблема?

1 Ответ

0 голосов
/ 23 мая 2018

Не знаю почему, но приведенный выше код теперь работает на 100%.Возможно, что-то пропустил ..

РЕДАКТИРОВАТЬ: Не в состоянии точно определить, что было не так.Я могу предоставить своему следующему конфигурацию службы, которая работает рядом с кодом.

  • Пользователь службы - LocalSystem
  • CanHandleSessionChangingEvents установлен на true

И .. Вот и все.Обратите внимание, что службе не нужно взаимодействовать с рабочим столом , чтобы перехватить эти события.

Кроме того, вы можете проверить, получают ли ваши службы события от терминала, в EventObserver , вы увидите, если они потерпели неудачу или они преуспели.

Удачи, ноесли вы используете код и конфигурацию выше, вы сможете заставить его работать;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...