Показать окно сообщения из службы Windows - PullRequest
20 голосов
/ 07 мая 2010

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

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

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

Ответы [ 6 ]

22 голосов
/ 07 мая 2010

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

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

16 голосов
/ 24 сентября 2011

Вы можете отобразить сообщение от службы с функцией " WTSSendMessage (...)" (которая доступна с Windows Vista и Windows Server 2008), вотхорошая статья: http://msdn.microsoft.com/en-us/library/ms683502(VS.85).aspx

0 голосов
/ 13 февраля 2012

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

Процедура

  1. Откройте панель управления службами. Например: Пуск> Панель управления> Администрирование> Службы.
  2. Выберите услугу «Чугунный безопасный соединитель».
  3. Щелкните правой кнопкой мыши имя службы и выберите «Свойства». Откроется окно Свойства службы.
  4. Выберите вкладку «Вход в систему».
  5. Выберите Локальную системную учетную запись, а затем выберите Разрешить службе взаимодействовать с рабочим столом.
  6. Нажмите ОК.
  7. Нажмите Перезагрузить.
0 голосов
/ 07 мая 2010

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

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

0 голосов
/ 07 мая 2010

Из Википедия :

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

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

0 голосов
/ 07 мая 2010

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

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