gpt4 book ai didi

c++ - 在 WinNT.h 中,为什么 STANDARD_RIGHTS_READ、...WRITE 和...EXECUTE 定义为相同?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:06 24 4
gpt4 key购买 nike

我正在做一些 Win32 互操作。东西,在搜索标题并仔细阅读 MSDN 并在快乐的泡沫中定义常量和 dll 导入时,我在 WinNT.h 中发现了一些奇怪的行(我的版本中的第 6486-6488 行......呃...... 7.1a,我想想)

#define STANDARD_RIGHTS_READ             (READ_CONTROL)
#define STANDARD_RIGHTS_WRITE (READ_CONTROL)
#define STANDARD_RIGHTS_EXECUTE (READ_CONTROL)

我盯着它看了一会儿,喝着茶,想知道为什么这三个常量都被定义为相同的值。

这很有趣。有人知道吗?

最佳答案

不同类型的内核对象具有不同的预定义访问掩码,用于读取、写入和执行。

例如, token 使用TOKEN_READTOKEN_WRITETOKEN_EXECUTE。文件使用 FILE_GENERIC_READFILE_GENERIC_WRITEFILE_GENERIC_EXECUTE:

比较TOKEN_READFILE_GENERIC_READ的定义:

#define TOKEN_READ       (STANDARD_RIGHTS_READ      |\
TOKEN_QUERY)

#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ |\
FILE_READ_DATA |\
FILE_READ_ATTRIBUTES |\
FILE_READ_EA |\
SYNCHRONIZE)

STANDARD_RIGHTS_READ 是一组标准访问权限,需要出现在特定于对象类型的访问掩码中才能进行读取。 STANDARD_RIGHTS_WRITESTANDARD_RIGHTS_EXECUTE 也是如此。

碰巧你读、写、执行所需的标准访问权限是READ_CONTROL,所以STANDARD_RIGHTS_READSTANDARD_RIGHTS_WRITESTANDARD_RIGHTS_EXECUTE 都是这样定义的。

关于c++ - 在 WinNT.h 中,为什么 STANDARD_RIGHTS_READ、...WRITE 和...EXECUTE 定义为相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com