System.Security.AccessControl.CommonAce's Constructor中accessMask参数的含义是什么?不幸的是描述“ACE的访问掩码”。不是很有帮助。
答案 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