SECURITY_ATTRIBUTES 實現最低權限 主要用於多進程之間共享數據空間的句柄的權限設置,
若高權限 進程 設置默認值 NULL,對於低權限進程來說 可能無法讀取。
參考文章
windows中以最低權限(SECURITY_ATTRIBUTES)創建內核對象
創建一個比EveryOne SECURITY_ATTRIBUTES更開放的安全屬性
實現代碼
HANDLE CreateLocalShareMen()
{
HANDLE hMapFile;
SECURITY_ATTRIBUTES SecAttr;
SECURITY_DESCRIPTOR SecDesc;
SecAttr.nLength = sizeof(SecAttr);
SecAttr.bInheritHandle = FALSE;
SecAttr.lpSecurityDescriptor = &SecDesc;
InitializeSecurityDescriptor(&SecDesc, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&SecDesc, TRUE, 0, FALSE);
hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, &SecAttr, PAGE_READWRITE, 0, TALK_LYNC_SHAREMEN_SIZE, TALK_LYNC_SHAREMEN);
if(hMapFile == NULL)
{
ErrLogW("get provity error : %d",GetLastError());
}
return hMapFile;
}