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

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 访问权限