Олицетворение пользователей для доступа к ульям - различные методы, каковы практические вопросы? - PullRequest
2 голосов
/ 20 января 2009

Я разрабатываю Службу для работы под учетной записью LocalSystem в Win2000, XP и Vista. Он будет нуждаться в доступе к кустам реестра пользователей, иногда в течение продолжительных периодов времени, как когда пользователи вошли в систему, так и когда они не вошли в систему (ЕСЛИ профиль является локальным. Если профиль находится в роуминге и не загружен Я не буду пытаться загрузить его.)

Если пользователь вошел в систему, я могу получить токен доступа пользователей различными способами (например, из процесса Explorer или путем получения событий входа в систему из диспетчера управления службами), а затем использовать ImpersonateLoggedOnUser и RegOpenCurrentUser для доступа к кусту пользователя. Однако, каковы будут последствия, если пользователь выберет LogOff в меню «Пуск», пока я подражаю, и у него открыт улей? Будет ли предотвращен выход из системы? Будет ли прекращено мое подражание?

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

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

Предупреждение: ImpersonateLoggedOnUser можно использовать ТОЛЬКО для вошедшего в систему пользователя (токен, полученный из процесса или события SCM) ИЛИ для пользователя, для которого у меня есть пароль в виде открытого текста, чтобы вызвать WinLogon и получить токен - TRUE / FALSE? Другими словами, хотя у меня есть максимальные разрешения в качестве LocalSystem и я могу изменить пароль пользователя или даже удалить учетную запись пользователя, если пользователь не вошел в систему, совершенно невозможно создать новый токен для олицетворения пользователя, не имея пароль?

1 Ответ

1 голос
/ 20 июня 2009

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

...