Почему приложение работает как системная учетная запись в Windows при выходе из системы

2

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

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

  • 0
    Привет Троттс, у тебя есть какое-нибудь решение?
Теги:

6 ответов

4
Лучший ответ

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

5

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

  • 0
    ... а затем, поскольку сервисам настоятельно не рекомендуется иметь пользовательский интерфейс, используйте отдельный процесс через некоторый интерфейс удаленного взаимодействия для взаимодействия с пользователем.
2

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

1

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

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

1

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

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню