2017-04-04 63 views
2

我需要使用Win32 API来创建具有特定权限的文件夹。正如我一直在浏览文档,我发现两个例子似乎是合理的:使用SDDL或手动创建安全描述符的区别?

  1. 这个例子创建一个DACL使用SDDL,它增加了一个SECURITY_ATTRIBUTES结构,并用它来创建一个文件夹:

    Creating a DACL

  2. 此示例手动指定SID_IDENTIFIER_AUTHORITYPSIDEXPLICIT_ACCESS结构(包括ACCESS_MASK等),TRUSTEE,依此类推,直到所得SECURITY_ATTRIBUTES结构被应用到新的对象(注册表项,在这个例子的情况下):

    Modifying the ACLs of an Object in C++

在我看来,使用SDDL是更容易使用和更小的bug容易,一旦你过去粗糙的语法。

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

+0

就最终结果而言,没有区别。手动方法稍微快一点,但除非你试图每秒产生一千个安全描述符,这并不重要。一些应用程序使用手动方法的主要原因是代码是在SDDL存在之前编写的。 –

+0

...尽管如果有输入参数,即“如果您事先不知道安全描述符将需要什么”,那么有时可以更清楚地构建安全描述符“手动”。 –

回答

2

这几天,你可以使用。 SDDL对于人类来说只是一个“友好”的字符串。在某些情况下,它们必须转换为二进制等效,然后才能被大多数安全功能使用。

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

除非您支持Windows NT4,或者需要使用隐含的别名,否则只要使用SDDL字符串就可以。

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

相关问题