如何判断当前线程是否冒充?

gal*_*ets 1 c++ security winapi

我有一个c ++应用程序,其中线程可以使用LogonUser/ImpersonateLoggedOnUser模拟,然后使用RevertToSelf还原模拟.我遇到了错误导致线程两次冒充这种方式.我希望通过测试当前线程是否已经模拟来防止这种情况,如果是,则抛出异常.有没有办法判断当前线程是否已经模拟?

Luk*_*uke 7

您可以使用OpenThreadToken.如果一个线程有一个令牌,那么它就是冒充; 如果它没有令牌那么它就不会冒充.