Windows安全属性的设定

在使用 CreateFileMapping CreateEvent API 候, 常会遇到一个安全属性的 定,一般的程序都会 置成 NULL ,用系   的安全属性来 定。但是在 windows2003  服 程序的 开发 中,用系 的安全属性 建一个 FileMapping ,即使是 admin   也不能找 开这 FileMapping 错误码 5   了能 其它用 下运行的程序打 开这 个服 程序 建的 FileMapping ,需要作下面的 定。

定之前先 两个安全属性相 API 明。
WINADVAPI BOOL WINAPI InitializeSecurityDescriptor (PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision );
WINADVAPI BOOL WINAPI SetSecurityDescriptorDacl (PSECURITY_DESCRIPTOR pSecurityDescriptor,
   BOOL bDaclPresent,    PACL pDacl, BOOL bDaclDefaulted );

InitializeSecurityDescriptor 
API 行安全属性描述初始化的,第一个参数 pSecurityDescriptor 是要 行初始化的安全属性描述,第二个参数 指定分配 安全描述符的修 订级别 。它必 指定 SECURITY_DESCRIPTOR_REVISION

SetSecurityDescriptorDacl  API 安全属性 定的
第一个参数: PSECURITY_DESCRIPT 指向一个安全描述符
  二个参数: bDaclPresent 提示 DACL 是否存在, 真的 候, PSECURITY_DESCRIPT 构造体中的  SE_DACL_PRESENT  志会初始化(用 pDacl bDaclDefaulted ),用 FALSE SE_DACL_PRESENT  志会被清除,参数 pDacl bDaclDefaulted  会被无
第三个参数: pDacl 指向 ACL 构造体, 个参数是空的 候,会充 任何程序 访问这 象。
第四个参数: bDaclDefaulted  指示 标记 ,是既定的 是用 指定

想要做成一个 任何程序都能 访问 的共享内存,参照下面代

     SECURITY_ATTRIBUTES sa;
     SECURITY_DESCRIPTOR sd;

     InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);
     SetSecurityDescriptorDacl(&sd,TRUE,NULL,FALSE);
     sa.nLength = sizeof(SECURITY_ATTRIBUTES);
     sa.bInheritHandle = TRUE;
     sa.lpSecurityDescriptor = &sd;

       CreateFileMapping(.., &sa,...);

你可能感兴趣的:(SDK)