获取令牌
本地用户情况:
通过WTSGetActiveConsoleSessionId获取当前物理会话ID,WTSQueryUserToken获取会话ID的token, LookupPrivilegeValue寻找某权限的luid(局部唯一编号),AdjustTokenPrivileges提升某令牌的权限。DuplicateTokenEx复制令牌
远程用户情况
WTSEnumerateSessions枚举当前所有远程会话,WTSQuerySessionInformation获取远程会话的状态,GetTokenInformation获取令牌
以某令牌模拟登陆电脑
ImpersonateLoggedOnUser(user_token_)模拟以user_token_身份登陆
获取当前用户名
本地用户的情况:
WTSGetActiveConsoleSessionId获取当前会话ID
WTSQuerySessionInformation获取会话信息,内有用户名信息
远程用户的情况:
WTSEnumerateSessions枚举所有会话,
WTSQuerySessionInformation获取会话信息,如果它的状态等于WTSActive,则输出
通过用户名获取SID(security identify)
LookupAccountName()
通过SID来获取certificateHash,即为指纹(thumb_print)
读取注册表HKEY_USER\\SID\\Software\\Microsoft\\Windows NT\\CurrentVersion\\EFS\\CurrentKeys\\certificateHash
获取新证书
先以用户身份执行”cipher /FlUSHCACHE”,再以用户身份执行“cipher.exe /K”,然后用GetCurrentThumbprint()获取
通过指纹(Thumbprint)导出证书
找到证书
CertOpenSystemStore获取系统证书库“MY”内的句柄
CertEnumCertificatesInStore从上述的句柄枚举证书
CertGetNameString获取证书名称
CertGetCertificateContextProperty获取证书信息、获取指纹
如果获取到的指纹与输入指纹一致,则返回证书
加入证书
CertOpenStore打开证书库
CertAddCertificateContextToStore加入证书库