如何检查 ACL 是否受到保护

How to check if ACL is protected

本文关键字:是否 保护 ACL 何检查 检查      更新时间:2023-10-16

我有一个工具可以输出文件夹的所有者和ACL用于文档目的。我现在想添加一个标志,指示路径上的继承是否已启用。

到目前为止,我只能找到一个提供该功能的.net类(DirectorySecurity -> AreAccessRulesProtected(。

如何在本机 c++ 中执行此操作?对于其他功能,我使用GetSecurityInfo,但据我所知,我无法从中获取该信息。

谢谢

感谢 RbM 的评论,我已经解决了这个问题。对于未来的读者,这里有一个代码片段(没有错误处理(:

PSECURITY_DESCRIPTOR pSD = NULL;
HANDLE hFile = CreateFile(path.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
...
GetSecurityInfo(hFile, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL, &pSD);
...
SECURITY_DESCRIPTOR_CONTROL sdc;
DWORD dwRev = 0;
iRC = GetSecurityDescriptorControl(pSD, &sdc, &dwRev);
if (iRC== 0) {} //error
else {
if ((sdc & SE_DACL_PROTECTED) == SE_DACL_PROTECTED) {
daclProtected = true;
}
}