我有一个工具可以输出文件夹的所有者和 ACL 以供文档使用。我现在想添加一个标志,指示路径上的继承是否已启用。
到目前为止,我只能找到一个提供该功能的 .net 类 (DirectorySecurity -> AreAccessRulesProtected)。
我如何在 native C++ 中执行此操作?对于其他功能,我使用 GetSecurityInfo,但据我所知,我无法从中获取该信息。
谢谢
最佳答案
感谢 RbMm 的评论,我已经解决了这个问题。对于 future 的读者,这里有一个代码片段(没有错误处理):
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;
}
}
关于c++ - 如何检查ACL是否被保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45613080/