我的要求如下:我们如何在SHCreateDirectoryEx()中使用SECURITY_ATTRIBUTES?
- 在指定位置创建一个目录。
- 设置其属性,使文件夹为“READ ONLY”。换句话说,用户帐户不应该能够在该文件夹内创建文件夹/文件。
现在,我可以创建目录如下:
SHCreateDirectoryEx(NULL, <path>.c_str(), NULL);
我现在想设置相应的安全属性。任何帮助/代码示例将不胜感激。
平台:Win7的(郎咸平:C++/C)
我的要求如下:我们如何在SHCreateDirectoryEx()中使用SECURITY_ATTRIBUTES?
现在,我可以创建目录如下:
SHCreateDirectoryEx(NULL, <path>.c_str(), NULL);
我现在想设置相应的安全属性。任何帮助/代码示例将不胜感激。
平台:Win7的(郎咸平:C++/C)
你要做的第一件事就是创建一个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是无关紧要的,你的问题完全是关于'SECURITY_ATTRIBUTES'。 – 2013-03-07 14:31:15