CommonAce构造函数中的accessMask参数的含义(System.Security.AccessControl)

时间:2010-06-10 08:08:33

标签: c# security

System.Security.AccessControl.CommonAce's Constructor中accessMask参数的含义是什么?不幸的是描述“ACE的访问掩码”。不是很有帮助。

1 个答案:

答案 0 :(得分:2)

来自SDK文档:

32位值,其位对应于对象的访问权限。可以打开或关闭位,但设置的含义取决于ACE类型。例如,如果打开了与读取权限相对应的位,并且ACE类型为“拒绝”,则ACE拒绝读取对象权限的权限。如果设置了相同的位但ACE类型为Allow,则ACE授予读取对象权限的权限。

从WinNT.h SDK头文件中:

//       3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
//       1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
//      +---------------+---------------+-------------------------------+
//      |G|G|G|G|Res'd|A| StandardRights|         SpecificRights        |
//      |R|W|E|A|     |S|               |                               |
//      +-+-------------+---------------+-------------------------------+
//
//      typedef struct _ACCESS_MASK {
//          WORD   SpecificRights;
//          BYTE  StandardRights;
//          BYTE  AccessSystemAcl : 1;
//          BYTE  Reserved : 3;
//          BYTE  GenericAll : 1;
//          BYTE  GenericExecute : 1;
//          BYTE  GenericWrite : 1;
//          BYTE  GenericRead : 1;
//      } ACCESS_MASK;
//      typedef ACCESS_MASK *PACCESS_MASK;
//
//  but to make life simple for programmer's we'll allow them to specify
//  a desired access mask by simply OR'ing together mulitple single rights
//  and treat an access mask as a DWORD.  For example
//
//      DesiredAccess = DELETE | READ_CONTROL