Ответ 1
Здесь приведен пример преобразования имени пользователя в SID: Преобразование имени пользователя в строку SID в С#/. NET
Внутри службы Windows я хочу проверить некоторые пользовательские настройки, которые хранятся в области реестра HKCU каждого пользователя. Как я могу это сделать?
Я вижу, что у HKEY_USERS есть подразделы каждого пользователя, который вошел в систему на машине (или что-то в этом роде?), и внутри них есть области HKCU для каждого пользователя. Тем не менее, эти подразделы являются идентификаторами SID пользователей, поэтому мне как-то нужно будет определить SID для зарегистрированных пользователей (ов).
Затем я запрошу HKEY_USERS\<the users SID>\whichever\key\i\need
вместо запроса HKEY_CURRENT_USER\whichever\key\i\need
.
Из этот вопрос Я могу получить список текущих пользователей на компьютере в формате DOMAIN\USER. Есть ли способ получить SID пользователя от входа в Windows? Или существует ли более прямой способ получить путь реестра, который является HKCU для зарегистрированных пользователей (ов)?
Здесь приведен пример преобразования имени пользователя в SID: Преобразование имени пользователя в строку SID в С#/. NET
В HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
вы найдете SID существующих профилей. Профиль ProfileImagePath даст путь к профилю.
В большинстве случаев этот путь является именем пользователя. Но это может быть другой путь, если аналогичный путь уже существовал при создании профиля.
Короткие SID, такие как S-1-5-18 (= > Локальная система), являются локальными учетными записями по умолчанию (https://support.microsoft.com/en-us/kb/243330)
Для этого вам нужно будет сделать одно из следующих
Я не уверен на 100%, что # 1 будет работать, но я верю, что это будет.
Для любого решения, хотя вам потребуется либо учетные данные пользователей, либо токен доступа в вашем процессе. Это непросто, потому что это проблема безопасности.
Вы можете подключиться к своему удаленному реестру, а затем выполнить поиск всего ключа HKU для своего имени пользователя (то есть jsmith). Различные записи ссылаются на их профиль пользователя; они появятся, тогда вы можете просто посмотреть, под каким SID находятся эти записи. Немного окольного способа сделать это, но, похоже, работает.