Как получить профиль пользователя с учетом SID?

Мне нужно получить каталог профиля пользователя по умолчанию, учитывая его имя пользователя или SID.

Как мне это сделать?

GetUserProfileDirectory() работает только для текущей учетной записи.


person Paulo Pinto    schedule 06.05.2011    source источник


Ответы (1)


И GetUserProfileDirectory, и SHGetFolderPath могут получить каталог профиля другой учетной записи, единственная проблема заключается в том, что им нужен дескриптор токена, а не SID. Чтобы получить дескриптор токена, вам либо нужно знать пароль пользователя и вызвать LogonUser, либо, если пользователь уже вошел в систему, а вы работаете как служба, вы можете получить его токен.

Я предполагаю, что ни одно из этих решений не является тем, что вам нужно, поэтому вам нужно идти в недокументированную землю:

Прочитайте значение ProfileImagePath в разделе "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%SID%"

person Anders    schedule 06.05.2011
comment
Иногда мне интересно, о чем думают эти парни в Редмонде. Спасибо. - person Paulo Pinto; 08.05.2011