В то время как основной поток олицетворяет клиента, мой код создает поток и назначает ему токен олицетворения, используя SetThreadToken
. Затем основной поток закрывает токен.
В частности, основной поток делает это:
- Получите первичный токен, используя
LogonUser
. - Получите токен олицетворения, используя
DuplicateToken
из основного токена. - Звоните
ImpersonateLoggedOnUser
. - Создайте дополнительный поток и вызовите
SetThreadToken
в потоке с токеном олицетворения. RevertToSelf
.CloseHandle
как для олицетворения, так и для основного токена.
В этот момент вторичный поток все еще работает. Остается ли токен олицетворения пригодным для вторичного потока, даже если дескриптор токена был закрыт в основном потоке?
SetThreadToken
) - к этому токену будет добавлена дополнительная ссылка. в результате он не будет уничтожен, когда вы закроете его дескриптор. - person RbMm   schedule 17.10.2018SetThreadToken
мне нужен токен олицетворения, так что я все равно долженDuplicateToken
. Основной поток олицетворяет пользователя, потому что он также должен делать что-то еще от его имени. - person j6t   schedule 17.10.2018