Как получить байтовый массив SID - PullRequest
0 голосов
/ 14 марта 2010

Как я могу преобразовать тип PSID в байтовый массив, который содержит байтовое значение SID? Что-то вроде:

PSID pSid;
byte sidBytes[68];//Max. length of SID in bytes is 68
 if(GetAccountSid(
        NULL,       // default lookup logic
        AccountName,// account to obtain SID
        &pSid       // buffer to allocate to contain resultant SID
        )

{

ConvertPSIDToByteArray(pSid, sidBytes);

}

- как мне написать функцию ConvertPSIDToByteArray?

Ответы [ 2 ]

2 голосов
/ 14 марта 2010

Используйте GetLengthSid (), чтобы получить необходимое вам количество байтов. Затем memcpy () из PSID.

0 голосов
/ 14 марта 2010

Я думаю, что функция, которую вы можете искать: ConvertSidToStringSid . Общая идея заключается в преобразовании структуры PSID в LPTSTR, которая на самом деле имеет тип wchar_t. Затем вы можете преобразовать это с помощью стандартных функций в многобайтовый массив символов, используя wcstombs , который затем даст вам SID в байтах. В качестве альтернативы, вы можете напрямую работать с типом wchar_t и просто записать это - для этого есть функции. В любом случае результат будет UTF-16 LE закодирован, и если вам нужно изменить его, вам придется выполнить преобразование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...