В контексте моего ранее вопрос, Я пытаюсь получить UPN текущего вошедшего в Windows Active Directoy пользователя в C ++.
Я знаю, как получить SID вошедшего в систему пользователя, но не могу получить UPN вошедшего в систему пользователя.
Предполагая, что вы работаете как сервер (с высокими привилегиями) против клиентской программы, вы можете выдать себя за пользователя, используя API олицетворения Windows, затем позвоните GetUserNameExW с NameUserPrincipal в качестве формата имени.
Сложной частью здесь может быть подражание, в зависимости от того, с чем вам приходится работать.
Если у вас есть только SID и олицетворение не является опцией, вы можете использовать WMI или LDAP и запросить у DC: поиск объекта пользователя с соответствующим SID и получить атрибут UserPrincipalName. Опять же, вам понадобятся достаточные разрешения для этого.
Других решений пока нет …