#c #windows #registry
#c #Windows #реестр
Вопрос:
Вот в чем проблема.
Мне нужно запустить службу Windows, которая настраивается через реестр. Есть ли какой-либо способ изменить HKCU другого пользователя без перечисления всех пользователей на компьютере?
Комментарии:
1. Я знаю логин и пароль пользователя. Могу ли я получить SID, используя их?
2. Я не могу найти способ получить SID с помощью hToken (возвращаемый LogonUser).
3. Я нашел эту ссылку: msdn.microsoft.com/en-us/library/aa446670 . Этот метод работает, но возвращает что-то странное. После вызова ConvertSidToStringSid я получил строку, которую невозможно найти в реестре моего компьютера. Вы знаете причину?
4. Куст реестра другого пользователя может не загружаться, если пользователь не вошел в систему.
5. Почему бы и нет? Насколько я понял, подразделы в HKEY_LOCALUSERS являются символическими ссылками на HKCU для других пользователей.
Ответ №1:
Я нашел хороший способ сделать это через интерфейс WMI. Я открыл connectioin к WMI (смотрите там:http://msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx ).
Далее я перечислил все элементы в базе данных Win32_Account. У каждого элемента в Win32_Account есть поля домена, имени и SID.
Это способ получить правильный SID.
К сожалению, я все еще не знаю, как выполнить эту операцию без перечисления всех пользователей.
Кроме того, этот метод перечисляет всех пользователей в домене (даже если они никогда не заходят на локальный компьютер).