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;
}