У меня есть DLL, которая размещена внутри процесса, работающего в контексте администратора. DLL получает обратные вызовы на основе действий пользователя, вошедшего в систему. GetUserName () возвращает имя пользователя Admin вместо вошедшего в систему пользователя, который своими действиями отвечает за обратный вызов. Я пытаюсь выдать себя за зарегистрированного пользователя, чтобы получить точное имя пользователя, но мне это не удалось. Я пробовал использовать WTSEnumerateSessions () для перечисления сеансов. Все, что он делает, это возвращает активных пользователей. Но у меня нет возможности определить текущий пользователь из перечисленных сеансов.
Перечисление выглядит как показано ниже в разделе Windows Серверы. Есть ли способ узнать, кто текущий пользователь из активных пользователей?
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>rdp-tcp#5 User1 3 Active
console Administrator 4 Active
rdp-tcp#8 User2 5 Active
rdp-tcp 65536 Listen
Я пробовал использовать WTSGetActiveConsoleSessionId () . Но он всегда возвращает идентификатор сеанса пользователя, вошедшего в систему физически. Но никогда не указывайте идентификаторы сеанса пользователей, вошедших в систему через RDP.
Если кто-либо из вас решил проблему такого рода, пожалуйста, помогите мне.