Как сделать так, чтобы служба запускала процесс в рамках сеанса текущего пользователя? - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть служба, написанная на C #, которая контролирует набор файлов. Он использует Growl для уведомления конечного пользователя, если время изменения одного из этих файлов превышает 4 часа. Я видел ситуации, когда Growl.exe не запускался под сеансом текущего пользователя, поэтому они не получали обновления. Я хотел бы, чтобы мой сервис проверил, работает ли Growl (Growl.exe или, возможно, я мог бы где-нибудь найти идентификатор приложения?) И запустил его, если это не так. Как я могу гарантировать, что Growl всегда работает в сеансе текущего пользователя на любом компьютере, на котором работает эта служба?

Ответы [ 3 ]

1 голос
/ 12 апреля 2011

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

Почему бы не преобразовать это в программу, которая запускается при входе пользователя в систему?

0 голосов
/ 12 апреля 2011

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

Приветствия

CEC

0 голосов
/ 12 апреля 2011

Это интересный вопрос, но может показаться, что вы не можете сделать это, поскольку этот пост предлагает .Похоже, вы можете указать, что служба работает как локальная системная служба или как отдельный пользователь:

Service Dialog

...