如何使用 C++ 复制 SID 以进行存储
Posted
技术标签:
【中文标题】如何使用 C++ 复制 SID 以进行存储【英文标题】:How to copy SID for storage with C++ 【发布时间】:2013-02-23 23:30:50 【问题描述】:假设我使用以下 API 获取用户的 SID:
TOKEN_USER* pTU = (TOKEN_USER*)pbytes;
DWORD dwSize;
GetTokenInformation(hToken, TokenUser, pTU, dwSize, &dwSize);
pTU->User.Sid; //Contains the SID I need
我需要存储这个 SID 以供以后在程序中使用/比较。但是如何复制呢?
如果我这样做:
SID globalSIDStorage;
globalSIDStorage = *pTU->User.Sid;
我收到一个错误:
错误 C2679:二进制“=”:未找到采用右手的运算符 'PSID' 类型的操作数(或没有可接受的转换。
【问题讨论】:
【参考方案1】:您可能想使用CopySid。
【讨论】:
谢谢。这里的问题是知道 SID 长度。有那个API吗?同样根据我的粗略计算,如果我将 SID 存储为二进制数组,它将最大为 68 个字节。能比这个大吗? 好吧,没关系,它是GetLengthSid
: msdn.microsoft.com/en-us/library/windows/desktop/…,最大 SID 大小在 SECURITY_MAX_SID_SIZE
以上是关于如何使用 C++ 复制 SID 以进行存储的主要内容,如果未能解决你的问题,请参考以下文章
如何将此临时 char* 变量复制到我的结构中以进行更永久的存储?
C++ 使用用户名/SID 或备用读取任何 Windows 用户 HKEY