函式功能
創建一個SID(安全描述符)
函式原型
BOOL WINAPI CreateWellKnownSid( __in WELL_KNOWN_SID_TYPE WellKnownSidType, __in_opt PSID DomainSid, __out_opt PSID pSid, __inout DWORD *cbSid);
參數:
WellKnownSidType SID類型,WELL_KNOWN_SID_TYPE是枚舉類型,它包含一系列的安全描述符類型
DomainSid 指向創建了SID的域的指針,為NULL時表示使用本地計算機
pSid 指向存儲SID的地址
cbSid 指向存儲pSid的大小的地址
返回值
函式成功執行,返回非0的值;
執行失敗,返回值為0。想進一步了解錯誤信息,執行GetLastError.
舉例
DWORD SidSize;
PSID TheSID;
LPTSTR p;
SidSize = SECURITY_MAX_SID_SIZE; // 申請大足夠的記憶體
if(!(TheSID = LocalAlloc(LMEM_FIXED, SidSize))){
fprintf(stderr, "Could not allocate memory.\n");
Exit(1);
} //為計算機上的每一個組創建一個安全描述符
if(!CreateWellKnownSid(WinWorldSid, NULL, TheSID, &SidSize)){
fprintf(stderr, "CreateWellKnownSid Error %u", GetLastError());
}
else{ // 獲得安全描述符版本號 (S-1-1-0).
if(!(ConvertSidToStringSid(TheSID, &p))) {
fprintf(stderr, "Error during ConvertSidToStringSid.\n");
exit(1);
} // 當需要的時候使用安全描述符字元串
// ...
// 完成工作,釋放記憶體
LocalFree(p);
LocalFree(TheSID);
}