Как GetUserProfileDirectory, так и SHGetFolderPath могут получить каталог профиля другой учетной записи, единственная проблема заключается в том, что им нужен дескриптор токена, а не SID. Чтобы получить маркер, вам нужно знать пароль пользователя и вызвать LogonUser, или, если пользователь уже вошел в систему и вы работаете в качестве службы, вы можете получить их токен.
Полагаю, ни одно из этих решений не является тем, что вам нужно, поэтому вам нужно отправиться в недокументированную страну:
Считайте значение ProfileImagePath в разделе "HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \% SID%"