Мне нужно получить каталог профиля пользователя по умолчанию, учитывая его имя пользователя или SID.
Как мне это сделать?
GetUserProfileDirectory() работает только для текущей учетной записи.
Мне нужно получить каталог профиля пользователя по умолчанию, учитывая его имя пользователя или SID.
Как мне это сделать?
GetUserProfileDirectory() работает только для текущей учетной записи.
И GetUserProfileDirectory, и SHGetFolderPath могут получить каталог профиля другой учетной записи, единственная проблема заключается в том, что им нужен дескриптор токена, а не SID. Чтобы получить дескриптор токена, вам либо нужно знать пароль пользователя и вызвать LogonUser, либо, если пользователь уже вошел в систему, а вы работаете как служба, вы можете получить его токен.
Я предполагаю, что ни одно из этих решений не является тем, что вам нужно, поэтому вам нужно идти в недокументированную землю:
Прочитайте значение ProfileImagePath в разделе "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%SID%"