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

Показать окно сообщения из службы Windows

Можно ли отобразить окно сообщения (или любую форму уведомления) из службы Windows? Не могу заставить его работать. Я использовал:

            global::System.Windows.Forms.MessageBox.Show("A fatal error occurred. " +
                ServiceName + " is now terminating.");

но это не сработало и просто вызвало ошибку.

4b9b3361

Ответ 1

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

Для более "продвинутых" типов пользовательского интерфейса (а не только для сообщений об ошибках) способ, как правило, выполняется через обычное приложение Windows, которое вы помещаете в папку автозагрузки пользователя (или клавишу "Запуск" в реестре), и что переговоры к сервису через какой-то механизм IPC (удаленное взаимодействие .NET, WCF, регулярные сокеты, именованные каналы и т.д.).

Ответ 3

От Wikipedia:

Хотя обычно службы не имеют пользовательского интерфейса, разработчики могут добавлять формы и другие компоненты пользовательского интерфейса. В этом случае на вкладке "Вход в систему" ​​в диалоговом окне "Свойства службы" следует установить флажок " Разрешить службу для взаимодействия с рабочим столом" (хотя следует соблюдать осторожность при таком подходе, поскольку это может вызвать риск безопасности, поскольку любое зарегистрированный пользователь сможет взаимодействовать с сервисом).

При включении этой опции вы должны иметь возможность отображать окна сообщений из службы.

Ответ 4

Разрешить службу взаимодействовать с рабочим столом поможет вам сделать это из консоли Services.msc.

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

Ответ 5

OS: XP Включение интерактивного режима для служб Windows

Процедура

  • Откройте панель управления Services. Например: Пуск > Панель управления > Администрирование > Службы.
  • Выберите услугу "Безопасный разъем для чугунного литья".
  • Щелкните правой кнопкой мыши имя службы и выберите "Свойства". Откроется окно "Свойства службы".
  • Выберите вкладку "Вход в систему".
  • Выберите "Локальная системная учетная запись" и выберите "Разрешить службе" взаимодействовать с рабочим столом.
  • Нажмите "ОК".
  • Нажмите "Перезагрузить".

Ответ 6

Нет, вы не можете. У служб Windows нет графического интерфейса. Но вы можете показать небольшое уведомление в системном трее.