如何将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函数?
答案 0 :(得分:2)
使用GetLengthSid()获取您需要的字节数。然后来自PSID的memcpy()。
答案 1 :(得分:0)
我认为您可能正在寻找的功能是ConvertSidToStringSid。一般的想法是将PSID
结构转换为LPTSTR
,实际上类型为wchar_t
。然后,您可以使用标准函数将此转换为使用wcstombs的多字节字符数组,然后将以字节为单位为您提供SID。或者,您可以直接对wchar_t
类型进行操作,然后将其写出来 - 有处理它的函数。在任何一种情况下,结果都会UTF-16 LE
编码,如果您需要更改,则必须进行转换。