在Win32中,我们可以通过创建 NULL DACL来创建一个Everyone的ACL列表,通过这个列表,我们就可以创建一个对系统的Everyone都可以访问/使用的内存映射文件/Mutex了:)
在Win32中,我们要创建这样的一结构,代码通常是下面这样:
//解决服务程序和普通程序通讯的问题
SECURITY_DESCRIPTOR sd;
SECURITY_ATTRIBUTES sa;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd,TRUE,NULL,FALSE);
// set SECURITY_ATTRIBUTES
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
//参数为true 的时候,才可以和应用程序通信,false 则不行
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = &sd;
g_ryhMutex = CreateMutex(&sa, FALSE, "nutexname");