我有如下代码,可以生成普通进程共用的安全描述字,用于创建进程间“事件”对象
// 创建安全描述字
char domainBuffer[80] = { 0 };
SID_NAME_USE snu; memset(m_aclBuffer, 0 ,sizeof(m_aclBuffer));
m_pacl = (PACL)&m_aclBuffer;
memset(m_sidBuffer, 0, sizeof(m_sidBuffer));
m_psid = (PSID)&m_sidBuffer; DWORD sidBufferSize = sizeof(m_sidBuffer);
DWORD domainBufferSize = sizeof(domainBuffer); BOOL bRet = InitializeSecurityDescriptor(&m_sd, SECURITY_DESCRIPTOR_REVISION);
bRet = InitializeAcl(m_pacl, 1024, ACL_REVISION);
bRet = LookupAccountName(0, "Everyone", m_psid, &sidBufferSize, domainBuffer,
&domainBufferSize, &snu);
bRet = AddAccessAllowedAce(m_pacl, ACL_REVISION, GENERIC_ALL, m_psid);
bRet = SetSecurityDescriptorDacl(&m_sd, TRUE, m_pacl, FALSE);
m_sa.nLength = sizeof(SECURITY_ATTRIBUTES);
m_sa.bInheritHandle = FALSE;
m_sa.lpSecurityDescriptor = &m_sd; // 创建同步对象
char sName[ MAX_PATH + 1 ] = "ObjectName";
m_hEventExcl = CreateEvent( &m_sa, FALSE, TRUE, sName );
对于两个普通进程,该方法正常。但是当此代码在服务程序(service)中运行后,普通进程企图创建/打开同步对象时,报“权限拒绝”错误(5)。查资料说服务的安全描述字与普通进程不同,如何创建一个服务与普通进程共用的安全描述字?请教各位,谢谢