我最近在我们的文件服务器上重新设计了安全性,将大部分完全控制标记为修改。现在我的开发人员告诉我,每当他们使用GENERIC_ALL打开文件(例如CreateFile()
)时,他们就会收到拒绝访问的消息。
经过研究,似乎没有任何迹象表明GENERIC_ALL
只是GENERIC_EXECUTE
+ GENERIC_WRITE
+ GENERIC_READ
;然而,情况似乎并非如此,因为开发人员能够添加三个常量值,并将其用于CreateFile()
。
所以,我问...... GENERIC_ALL
到底做了什么?
谢谢,
马特
答案 0 :(得分:4)
GENERIC_ALL
访问权限包括每个可能的访问权限,包括WRITE_DAC
(更改权限)和WRITE_OWNER
(更改所有者)等内容。 File Security and Access Rights页面显示了GENERIC_*
访问权限如何映射到文件的特定访问权限。 File Access Rights Constants页面显示了文件的所有可能访问权限(可能在使用GENERIC_ALL
时都会被请求)。
您应该鼓励您的开发人员仅请求他们实际需要的访问级别。例如,很少会同时为GENERIC_EXECUTE
和GENERIC_WRITE
打开文件。
答案 1 :(得分:3)
GENERIC_ALL
表示“每个可能的访问级别”(对于文件,其名称为FILE_ALL_ACCESS
)。自从您删除完全控制后,尝试打开GENERIC_ALL
将因访问被拒绝而失败,因为(例如)WRITE_DAC
不再被授予。