2013-02-23 2 views
0

C++ Say, если я получаю SID пользователя с помощью следующего 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»(или нет приемлемой конверсии.

ответ

3

Вы, вероятно, хотите использовать CopySid.

+0

Спасибо. Проблема здесь заключается в знании длины SID. Есть ли API для этого? Также из моего грубого расчета, если я храню SID в виде двоичного массива, он будет максимальным в 68 байт. Это может быть больше? – ahmd0

+0

ОК, неважно, это 'GetLengthSid': http://msdn.microsoft.com/en-us/library/windows/desktop/aa446642(v=vs.85).aspx и максимальный размер SID находится в' SECURITY_MAX_SID_SIZE' – ahmd0