如何获取内核对象的安全描述符?

时间:2013-09-08 14:46:37

标签: c++ winapi kernel

我有从函数NtQUeryDirectoryObject()收到的内核对象列表。

如何获取此对象的安全描述符?我需要阅读所有这些对象的DACL,但所有尝试都会失败并显示错误“access is denied”

1 个答案:

答案 0 :(得分:3)

来自MSDN GetSecurityInfo()备注: *要从对象的安全描述符中读取所有者,组或DACL,必须在打开句柄时授予调用进程READ_CONTROL访问权限。要获得READ_CONTROL访问权限,调用者必须是对象的所有者,或者对象的DACL必须授予访问权限。*

基本上我理解DACL是零加访问控制条目。其中每个都有一个SID表,拒绝或授予访问权限。现在,DACL由对象的所有者控制。所有者肯定可以给别人控制(搜索MSDN以获取适当的API),或者我认为其他的也可以通过调用SetKernelObjectSecurity(忘记参数... :))来设置它。

我认为这将取决于您正在处理的“内容对象”。还有关于DACL的研究 - 研究它是关于空和无效的。