文件映射安全性和访问权限

Windows 安全模型允许你控制对文件映射对象的访问。 有关详细信息,请参阅 访问控制模型

调用 CreateFileMapping 函数时,可以为文件映射对象指定安全描述符。 如果指定 NULL,该对象将获取默认的安全描述符。 文件映射对象的默认安全描述符中的 ACL 来自创建者的主令牌或模拟令牌。

若要检索文件映射对象的安全描述符,请调用 GetNamedSecurityInfoGetSecurityInfo 函数。 若要设置文件映射对象的安全描述符,请调用 SetNamedSecurityInfoSetSecurityInfo 函数。

文件映射对象的有效访问权限包括 DELETEREAD_CONTROLWRITE_DACWRITE_OWNER标准访问权限。 文件映射对象不支持 SYNCHRONIZE 标准访问权限。 下表列出了特定于文件映射对象的访问权限。

访问权限 含义
FILE_MAP_ALL_ACCESS 包括对文件映射对象的所有访问权限, FILE_MAP_EXECUTE除外。 MapViewOfFileMapViewOfFileEx 函数将其视为与指定FILE_MAP_WRITE相同。
FILE_MAP_EXECUTE 允许映射文件映射对象的可执行视图。 对象必须已使用允许执行访问的页面保护(如 PAGE_EXECUTE_READPAGE_EXECUTE_WRITECOPYPAGE_EXECUTE_READWRITE 保护)创建。
FILE_MAP_READ 允许映射文件映射对象的只读视图或写入时复制视图。
FILE_MAP_WRITE 允许映射文件映射对象的只读、写入时复制或读/写视图的映射。 对象必须已使用允许写入访问的页面保护(如 PAGE_READWRITEPAGE_EXECUTE_READWRITE 保护)创建。

映射文件映射对象的写入时复制视图需要与映射只读视图相同的访问权限。 FILE_MAP_COPY标志不是访问权限,不应在安全描述符中将其指定为 DACL 的一部分。 此值只能与映射文件映射对象的视图的函数(如 MapViewOfFileMapViewOfFileEx 函数)或 OpenFileMapping 函数一起使用,后者处理 FILE_MAP_COPY 与处理 FILE_MAP_READ的方式相同。

如果要读取或写入对象的 SACL,可以请求对文件映射对象的 ACCESS_SYSTEM_SECURITY 访问权限。 有关详细信息,请参阅 访问控制列表 (ACL) SACL 访问权限