Windows ACL 和 ACCESS_MASK
Windows ACL and the ACCESS_MASK
在 C++ 程序中,我试图让一个文件可由与创建该文件的帐户不同的帐户写入和删除。为此,我发现我必须深入研究 ACL。
我的问题实际上是关于 ACCESS_MASK
。
我很难理解它的含义:
- "Specific rights"
- "Standard rights"
- "Generic"
当我查看文件的属性时,设置通用位似乎显示为对 "Everyone" 的更改。那是我应该期待的吗?另外两个是什么?
(顺便说一句,这个答案对让事情顺利进行非常有帮助:How to give "Everyone" write permissions via C++ MFC on Windows 8?)
特定权限是与特定类型的对象相关联的权限,例如文件、线程、进程、事件等。标准权限对所有对象都是通用的(至少在权限有意义的情况下),而通用权限是任何对对象类型有意义的东西。例如,对于 file access rights,GENERIC_READ
映射到 FILE_READ_DATA | FILE_READ_EA | FILE_READ_ATTRIBUTES | STANDARD_RIGHTS_READ | SYNCHRONIZE
,其中 STANDARD_RIGHTS_READ
定义为 READ_CONTROL
。
在 C++ 程序中,我试图让一个文件可由与创建该文件的帐户不同的帐户写入和删除。为此,我发现我必须深入研究 ACL。
我的问题实际上是关于 ACCESS_MASK
。
我很难理解它的含义:
- "Specific rights"
- "Standard rights"
- "Generic"
当我查看文件的属性时,设置通用位似乎显示为对 "Everyone" 的更改。那是我应该期待的吗?另外两个是什么?
(顺便说一句,这个答案对让事情顺利进行非常有帮助:How to give "Everyone" write permissions via C++ MFC on Windows 8?)
特定权限是与特定类型的对象相关联的权限,例如文件、线程、进程、事件等。标准权限对所有对象都是通用的(至少在权限有意义的情况下),而通用权限是任何对对象类型有意义的东西。例如,对于 file access rights,GENERIC_READ
映射到 FILE_READ_DATA | FILE_READ_EA | FILE_READ_ATTRIBUTES | STANDARD_RIGHTS_READ | SYNCHRONIZE
,其中 STANDARD_RIGHTS_READ
定义为 READ_CONTROL
。