使用SDDL或手动创建安全描述符之间的区别?

时间:2017-04-04 22:41:37

标签: c++ security winapi

我需要使用Win32 API创建具有特定权限的文件夹。在我浏览文档时,我发现了两个看似合理的例子:

  1. 此示例使用SDDL创建DACL,将其添加到SECURITY_ATTRIBUTES结构中,并使用它创建文件夹:

    Creating a DACL

  2. 此示例手动指定SID_IDENTIFIER_AUTHORITYPSIDEXPLICIT_ACCESS结构(包括ACCESS_MASK等),TRUSTEE等等直到生成的SECURITY_ATTRIBUTES结构应用于新对象(注册表项,在此示例中):

    Modifying the ACLs of an Object in C++

  3. 在我看来,一旦你超越了粗糙的语法,使用SDDL就容易使用,而且容易出错。

    这两种方法之间有什么区别?哪个更常用于工业?

1 个答案:

答案 0 :(得分:2)

现在,您可以使用其中任何一种。 SDDL只是一个供人看的“友好”字符串。在某些时候,必须先将它们转换为二进制等价物,然后才能被大多数安全功能使用。

如果我没记错的话,在Windows 2000中添加了SDDL字符串支持。每个新的Windows版本都会添加更多well-known aliases

除非您支持Windows NT4,或者需要使用晦涩的别名,否则您可以使用SDDL字符串(如果您愿意)。

如果速度更重要,那么经典的方式可能更快。