BOOL DpShareMemAllocator::CreateDACLWithAllAccess(SECURITY_ATTRIBUTES * pSA) { char * szSD = "D:" // Discretionary ACL "(A;OICI;GA;;;BG)" // full control to built-in guests "(A;OICI;GA;;;AN)" // full control to anonymous logon "(A;OICI;GA;;;AU)" // Allow full control to authenticated users "(A;OICI;GA;;;BA)"; // Allow full control to administrators if (NULL == pSA) return FALSE; return ConvertStringSecurityDescriptorToSecurityDescriptorA( szSD, SDDL_REVISION_1, &(pSA->lpSecurityDescriptor), NULL); }
static HANDLE PipeCreateServer(const char* pipename) { BOOL ret; const char* sd = "D:(A;OICI;GA;;;WD)"; SECURITY_ATTRIBUTES sa; HANDLE result = INVALID_HANDLE_VALUE; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = FALSE; ret = ConvertStringSecurityDescriptorToSecurityDescriptorA( sd, SDDL_REVISION_1, &sa.lpSecurityDescriptor, NULL); if(!ret) return INVALID_HANDLE_VALUE; result = CreateNamedPipeA( pipename, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, DEF_BUF_SIZE, DEF_BUF_SIZE, NMPWAIT_USE_DEFAULT_WAIT, &sa); if(sa.lpSecurityDescriptor) LocalFree(sa.lpSecurityDescriptor); return result; }