c++ - 如何检查ACL是否被保护

标签 c++ windows visual-c++

我有一个工具可以输出文件夹的所有者和 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/

相关文章:

c++ - 如何获取命令 ID 的键盘加速器?

c++ - 什么Alloc API可以在内部调用VirtualAlloc/保留内存?

java - 如何在 Java 应用程序日历中设置一周的第一天

c++ - Visual Assist 的免费替代品?

c++ - move : what does it take?

c++ - 我不明白这段代码是如何在 MS Visual C++ 编译器中执行的

c++ - VC++/C++ 高性能多线程GUI交易注意事项

c++ - 我可以为抛出 bad_cast 的情况安装自定义处理程序吗?

c++ - 索引属性如何返回引用?

c++ - 直接显示 ISampleGrabber : samples are upside-down and color channels reverse