小编dan*_*nyM的帖子

为什么 AccessCheck 不将 GenericMapping 应用到 DACL?

AccessCheck 函数获取一个 GenericMapping 参数。这个参数是干什么用的?它不用于 DesiredAccess 参数,因为之前必须将 MapGenericMask 应用于 DesiredAccess。

它也不适用于包含在 SecurityDescriptor 中的 DACL,因为我发现使用 C 程序执行此操作:

  • 打开当前线程令牌
  • 使用令牌中的所有者和默认组创建安全描述符,以及将 GENERIC_ALL 授予所有者“D:(A;;GA;;;ownerSID)”的 DACL
  • 设置 GENERIC_MAPPING,它将(以及其他)GenericAll 映射到我的 OWN_READ | OWN_WRITE(定义为 0x0001 和 0x0002)
  • 使用上面创建的安全描述符调用 AccessCheck,线程令牌,OWN_READ 作为 DesiredAccess,描述的 GENERIC_MAPPING

但是,这会因访问被拒绝错误而失败。当我将安全描述符更改为“D:(A;;0x0001;;;ownerSID)”时,访问被授予。这表明 AccessCheck 没有使用 GenericMapping 参数将 DACL 中的通用访问标志 (GA/GW/GR/GX) 转换为特定访问权限。为什么?难道我做错了什么?

https://msdn.microsoft.com/de-de/library/windows/desktop/aa374815(v=vs.85).aspx没有给出关于如何设置安全描述符的任何提示。

permissions winapi dacl

5
推荐指数
1
解决办法
210
查看次数

标签 统计

dacl ×1

permissions ×1

winapi ×1