GENERIC_ALL和文件夹/文件ACL? GENERIC_ALL到底做了什么?

时间:2012-05-09 01:20:37

标签: c windows file-io createfile

我最近在我们的文件服务器上重新设计了安全性,将大部分完全控制标记为修改。现在我的开发人员告诉我,每当他们使用GENERIC_ALL打开文件(例如CreateFile())时,他们就会收到拒绝访问的消息。

经过研究,似乎没有任何迹象表明GENERIC_ALL只是GENERIC_EXECUTE + GENERIC_WRITE + GENERIC_READ;然而,情况似乎并非如此,因为开发人员能够添加三个常量值,并将其用于CreateFile()

所以,我问...... GENERIC_ALL到底做了什么?

谢谢,

马特

2 个答案:

答案 0 :(得分:4)

GENERIC_ALL访问权限包括每个可能的访问权限,包括WRITE_DAC(更改权限)和WRITE_OWNER(更改所有者)等内容。 File Security and Access Rights页面显示了GENERIC_*访问权限如何映射到文件的特定访问权限。 File Access Rights Constants页面显示了文件的所有可能访问权限(可能在使用GENERIC_ALL时都会被请求)。

您应该鼓励您的开发人员仅请求他们实际需要的访问级别。例如,很少会同时为GENERIC_EXECUTEGENERIC_WRITE打开文件。

答案 1 :(得分:3)

GENERIC_ALL表示“每个可能的访问级别”(对于文件,其名称为FILE_ALL_ACCESS)。自从您删除完全控制后,尝试打开GENERIC_ALL将因访问被拒绝而失败,因为(例如)WRITE_DAC不再被授予。