Один экземпляр программы с доступом к нескольким пользователям

399
Recon

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

Возможно ли это в Windows 10 (с AD)?

0
Пожалуйста, добавьте больше деталей о вашем приложении и сценарии. Почему бы вам просто не дать пользователям RDP на определенный компьютер с одинаковыми учетными данными и никогда не выходить из системы? Они могут отключить сеанс и оставить программное обеспечение работающим. simlev 5 лет назад 0
Они должны быть разными пользователями, поскольку имеют разные права доступа к некоторым папкам и т. Д. Recon 5 лет назад 0

3 ответа на вопрос

2
Eugen Rieck

Приложение, которое не «принадлежит» пользователю, а системе, называется NT на языке NT (а значит, и W10). Хотя он не может предоставить пользовательский интерфейс напрямую, он может создать конечную точку, к которой подключается приложение только для пользовательского интерфейса, чтобы показать пользовательский интерфейс.

Это лучше всего объяснить с помощью механизма Центра обновления Windows или Защитника Windows: оба имеют рабочий процесс, выполняющийся как сервисы, то есть в фоновом режиме, отделенном от пользователя, вошедшего в систему, но их пользовательский интерфейс отделен от этого рабочего процесса и не сохраняет любое состояние - его можно убить, не влияя на базовый сервис. Процесс пользовательского интерфейса подключается к рабочему процессу, чтобы получить состояние службы и отобразить его в удобном пользовательском интерфейсе или отправить команды службе, которые были введены через графический интерфейс.

Если ваше приложение делает что-то «причудливое», для которого требуется согласие UAC, эта модель также помогает вам: службы имеют внутреннее согласие (всплывающее окно UAC, которое появляется при установке), а часть пользовательского интерфейса не нуждается в нем.

0
harrymc

Я вижу два решения:

  • Сохраните в файле информацию о состоянии приложения, чтобы вы могли перезапустить, где остановился,

  • Преобразуйте свое приложение в системную службу Windows и разделите его на две части: часть системной службы и часть с графическим интерфейсом.

-1
Rattlehead

Процесс завершается, когда пользователь выходит из системы.

Я предлагаю вам создать нового пользователя в AD, и он должен быть единственным активным пользователем на этом компьютере, чтобы им не приходилось выходить из системы.