我的要求如下:
现在,我可以按如下方式创建目录:
SHCreateDirectoryEx( NULL, <path>.c_str(), NULL );
我现在想设置适当的安全属性。任何帮助/代码示例都将不胜感激。
平台:Win7(Lang:C ++ / C)
答案 0 :(得分:3)
你要做的第一件事是创建一个SECURITY_ATTRIBUTES
结构,并设置它的成员。
SECURITY_ATTRIBUTES SecAttr;
SecAttr.size = sizeof(SECURITY_ATTRIBUTES); //Set size of structure
下一个成员是SECURITY_DESCRIPTOR
类型,它实际上包含管理对此对象的安全访问所需的所有数据。
你不能按照MSDN documentation直接创建这个结构,但你可以使用文档中提供的函数来创建这样的结构,根据需要设置所有必需的标志,然后获得指向它的指针到SecAttr
。
可以找到有关如何创建此类SECURITY_DESCRIPTOR
结构的示例here。在这个例子中,它是为注册表项完成的,但原理是相同的。
基本上你正在填写一个DACL(Discretionary Security Access Control List)或SACL(System Access Control List,它具有正确的访问属性(读/写/只读)等,你希望对象有
填写整个SECURITY_ATTRIBUTES
结构后,您可以将其传递给SHCreateDirectoryEx
函数。