Почему приложение работает как системная учетная запись в Windows при выходе из системы - PullRequest
2 голосов
/ 09 июня 2009

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

Любая информация о том, почему это происходит, будет принята.

Ответы [ 6 ]

5 голосов
/ 09 июня 2009

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

4 голосов
/ 09 июня 2009

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

2 голосов
/ 09 июня 2009

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

1 голос
/ 09 июня 2009

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

Однако лучшим подходом было бы предоставить запрашиваемый интерфейс из вашего приложения, используя WCF или Remoting, который вы можете отобразить пользователям, используя отдельное приложение. Если вы хотите получать уведомления от своего приложения, когда никто не вошел в систему, то вы можете рассмотреть возможность отправки электронной почты или публикации событий на отдельную конечную точку WCF / Web-сервисов / Remoting.

1 голос
/ 09 июня 2009

Вам необходимо запустить приложение как службу Windows.

0 голосов
/ 09 июня 2009

Поскольку процесс был запущен explorer.exe, он будет остановлен, когда пользователь выйдет из системы независимо от того, под какой учетной записью он работает. Это просто способ работы Windows. Чтобы процесс продолжался, он должен быть сервисом или, возможно, запущен планировщиком задач.

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