Я создал службу Windows, которая запускает программу в фоновом режиме и проверяет, не требует ли дальнейшая установка веб-приложения.
Когда я запускаю эту службу в учетной записи администратора, фоновая программа запускается нормально и быстро и работает под именем пользователя.
http://i.imgur.com/oKQl9ym.png
Все работает отлично, я могу просто зайти на сайт без лишней информации и так далее.
Это также работает, когда я выхожу из системы и вхожу в систему с другим администратором.
ОДНАКО он не работает под обычным пользователем домена. процесс действительно запускается, но не в системе (но с пустым именем пользователя), поэтому фоновая программа запускается, но не с правильным именем пользователя.
Почему это? И что мне нужно изменить, чтобы все стандартные пользователи, которые входят в систему, также запускали эту службу от имени администратора?
Я подозреваю, что проблема в следующем: учетная запись SYSTEM имеет только локальную (а не доменную или сетевую) аутентификацию, поэтому, когда обычный пользователь входит в систему, он не может запускать или управлять какими-либо процессами, уже запущенными с повышенными правами. Это функция, а не ошибка - учетные записи пользователей или гостей не могут вызывать процессы корневого уровня без какого-либо уровня абстракции, чтобы эти пользователи / гости не повышали себя.
Если я могу предложить альтернативный метод: создайте учетную запись с соответствующими разрешениями для изменения веб-приложения, администрирования его и т. Д. И запускайте свою службу с этими кредитами. Заблокируйте эту учетную запись для интерактивного использования (никто не может войти в нее с ее помощью) и убедитесь, что у нее нет прав на всю систему, только на веб-приложение и соответствующие ресурсы, включая вашу программу проверки обновлений.
Поскольку вы проверяете статус обновления своего веб-приложения, вместо того, чтобы запускать проверку при входе пользователя в систему, запустите его (снова с указанной выше учетной записью службы) как запланированную задачу. Таким образом, вам не понадобится конкретная запущенная служба для запуска фоновой задачи обновления, когда пользователь заходит на сайт, вместо этого она сканируется и обновляется по заданному расписанию, уже в фоновом режиме.