2010-03-14 53 views
0

如何將PSID類型轉換爲包含SID的字節值的字節數組? 喜歡的東西:如何檢索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

'68 = SECURITY_MAX_SID_SIZE' – 2016-12-04 04:26:09

回答

0

我覺得你可能要找的功能是ConvertSidToStringSid。總的想法是將PSID結構轉換爲LPTSTR,其實際上是wchar_t類型。然後,您可以使用標準函數將其轉換爲使用wcstombs的多字節字符數組,然後它將以字節爲單位給出SID。或者,您可以直接在wchar_t類型上操作,只是寫出來 - 有處理該類型的函數。無論哪種情況,結果都將是UTF-16 LE編碼,如果您需要更改,則必須進行轉換。

+0

尋找這裏: http://www.secnewsgroups.net/group/microsoft.public.dotnet.security/topic10882.aspx 予理解的是SID字符串的長度不是字節數組的長度: (68) - 純二進制 (136) - (68×2)=十六進制串 (184) - SID字符串 因此,我希望的最短形式... – rkellerm 2010-03-15 09:30:36

2

使用GetLengthSid()獲取您需要的字節數。然後從PSID讀取memcpy()。

相關問題