C++ 使用SDDL和手动创建安全描述符之间的区别?
我需要使用Win32 API创建具有特定权限的文件夹。在浏览文档时,我发现了两个似乎合理的示例:C++ 使用SDDL和手动创建安全描述符之间的区别?,c++,security,winapi,C++,Security,Winapi,我需要使用Win32 API创建具有特定权限的文件夹。在浏览文档时,我发现了两个似乎合理的示例: 本例使用SDDL创建DACL,将其添加到SECURITY\u ATTRIBUTES结构中,并使用它创建文件夹: 本例手动指定SID\u IDENTIFIER\u AUTHORITY,PSID,EXPLICIT\u ACCESS结构(包括ACCESS\u MASK等),受信方,等等,直到生成的SECURITY\u属性结构应用于新对象(本例中的注册表项): 在我看来,使用SDDL要容易得多,而且一旦
DACL
,将其添加到SECURITY\u ATTRIBUTES
结构中,并使用它创建文件夹:
SID\u IDENTIFIER\u AUTHORITY
,PSID
,EXPLICIT\u ACCESS
结构(包括ACCESS\u MASK
等),受信方
,等等,直到生成的SECURITY\u属性
结构应用于新对象(本例中的注册表项):
这两种方法之间有什么区别(如果有的话)?哪一种在工业上更常用?现在,你可以使用其中一种。SDDL对于人类来说只是一个“友好”字符串。在某些情况下,在大多数安全函数使用它们之前,必须将它们转换为二进制等价物 如果我没记错的话,SDDL字符串支持是在Windows 2000中添加的。在每个新的Windows版本中添加了更多 除非您支持Windows NT4,或者需要使用模糊别名,否则只要使用SDDL字符串即可
如果速度更重要,那么经典的方法可能更快。就最终结果而言,没有区别。手动方法稍微快一点,但除非你试图每秒生成一千个安全描述符,否则这并不重要。一些应用程序使用手动方法的主要原因是代码是在SDDL存在之前编写的。。。。尽管有时,如果存在输入参数,也就是说,如果您事先不知道安全描述符需要是什么,那么“手工”构建安全描述符可能会更简洁。