如何使用 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++ 中的大端和小端值之间进行转换? [复制]

C++ 使用用户名/SID 或备用读取任何 Windows 用户 HKEY

PHP 会话 ID - SID 的有效期是多久? [复制]

如何设置我的本地 Git 存储库以使用我刚刚创建的新个人访问令牌? [复制]

使用 devc++ 和 c++ 语言复制文件和目录