6

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

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

所以,我问......GENERIC_ALL真正的作用是什么?

谢谢,

马特

4

2 回答 2

4

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

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

于 2012-05-09T01:28:33.950 回答
3

GENERIC_ALL表示“所有可能的访问级别”(对于文件,它的名称为FILE_ALL_ACCESS)。由于您删除了完全控制,因此打开的尝试GENERIC_ALL将失败并显示拒绝访问,因为(例如)WRITE_DAC不再被授予。

于 2012-05-09T01:28:27.157 回答