Как определить, можно ли показать окно? - PullRequest
2 голосов
/ 21 января 2009

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

Надеюсь, я правильно сформулировал это:)

Ответы [ 2 ]

4 голосов
/ 21 января 2009

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

В Vista службы вообще не могут взаимодействовать с рабочим столом.

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

Что вам нужно сделать, это создать небольшую клиентскую программу, которая запускается при входе пользователя в систему. Эта программа взаимодействует со службой с помощью некоторой распределенной технологии (например, Remoting или WCF, я рекомендую последнюю). На основании сообщений, которые она получает от сервера, эта клиентская программа может запускать диалоги и элементы пользовательского интерфейса для взаимодействия с пользователем.

0 голосов
/ 21 января 2009

Вы не сможете отобразить какой-либо пользовательский интерфейс вашего сервиса независимо от того, вошел ли пользователь в систему. Сервис будет работать на другом рабочем столе из соображений безопасности - это можно обойти, но, пожалуйста, не т. Лучше всего иметь отдельную программу, которая будет показывать ваш пользовательский интерфейс, а затем использовать некоторую форму межпроцессного взаимодействия между ними.

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