MSDN 文章Enabling and Disabling Privileges in C++提供了一个代码示例来展示如何在访问令牌中启用或禁用权限。
我引用了有问题的部分:
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
else
tp.Privileges[0].Attributes = 0;
成员的零值是什么意思Attributes
?
根据TOKEN_PRIVILEGES结构的文档,权限的属性可以是以下值的组合:
SE_PRIVILEGE_ENABLED
(在0x00000002L中WinNT.h
)SE_PRIVILEGE_ENABLED_BY_DEFAULT
(在0x00000001L中WinNT.h
)SE_PRIVILEGE_REMOVED
(在0x00000004L中WinNT.h
)SE_PRIVILEGE_USED_FOR_ACCESS
(在0x80000000L中WinNT.h
)
因此,我们看不到任何值为 0 的有效常量。我猜,零等于SE_PRIVILEGE_REMOVED
。
再一次,如果零意味着禁用所有权限,我对此表示怀疑,因为只需将AdjustTokenPrivileges()DisableAllPrivileges
的参数设置为即可禁用所有权限。TRUE
这里的任何人都可以解释零值的真正 作用吗?