Установка службы Windows в качестве пользователя - PullRequest
3 голосов
/ 12 ноября 2009

В настоящее время я нахожусь в процессе создания приложения-службы Windows, которое будет отслеживать изменения некоторых ключей, внесенных в реестр HKEY_USERS. Я делаю это, собирая SID текущего пользователя. У меня проблема в том, что он возвращает SID администратора из-за службы, работающей в настоящее время как локальная система.

Система должна собирать и возвращать SID текущего пользователя, вошедшего в систему (под этим я не подразумеваю локальную службу, локальную систему или сетевую службу, но лицо, вошедшее в Windows через GINA), поэтому что мне нужно, чтобы служба работала под этим пользователем. Это также позволит службе выполнить обратную запись на сетевой диск пользователя, который предназначен для этой программы.

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

Ответы [ 3 ]

2 голосов
/ 12 ноября 2009

Предположение " * текущий пользователь *" - это концепция Windows для настольных компьютеров, а с быстрым переключением пользователей даже это уже не так. Уровень служб Windows довольно распространен среди настольных компьютеров и серверов и не очень хорошо с этим справляется. Он находится под слоем интерактивных сессий. Одним из способов, которым это проявляется, является возможность запуска служб, даже если в системе зарегистрировано 0 пользователей.

1 голос
/ 12 ноября 2009

Все это кажется немного запутанным. Может быть любое количество людей, вошедших в систему через удаленные рабочие столы и т. Д. Если вы как служба хотите видеть их реестр, вы определенно не доберетесь туда через HKCU. Если вы хотите что-то вроде этого, вы должны использовать exe автозапуска, а не службы. Что-то вроде проверки сессий и добавления в них содержимого для доступа к загруженному кусту реестра в сеансе является излишним и вряд ли будет чистым в любом случае.

0 голосов
/ 12 ноября 2009

Вы можете найти процесс, который запускается с каждым пользователем, например explorer.exe, а затем получить SID пользователя, который запускает процесс (вы можете использовать WMI, как в функции здесь )

...