我的要求如下:
- 在指定位置创建目录。
- 设置其属性,使文件夹为“只读”。换句话说,用户帐户不应该能够在此文件夹中创建文件夹/文件。
现在,我可以按如下方式创建目录:
SHCreateDirectoryEx( NULL, <path>.c_str(), NULL );
我现在想设置适当的安全属性。任何帮助/代码示例将不胜感激。
平台:Win7(语言:C++/C)
我的要求如下:
现在,我可以按如下方式创建目录:
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 文档,您不能直接创建此结构,但您可以使用文档中提供的函数来创建这样的结构,根据需要设置所有必要的标志,然后获取指向它的指针以传递给SecAttr
.
SECURITY_DESCRIPTOR
可以在此处找到有关如何创建此类结构的示例。在此示例中,它是针对注册表项完成的,但原理是相同的。
本质上,您正在填写 DACL(自主安全访问控制列表)或 SACL(系统访问控制列表,其中包含您希望对象拥有的访问权限(读/写/只读)等的正确属性。
填写完整个SECURITY_ATTRIBUTES
结构后,您可以将其传递给您的SHCreateDirectoryEx
函数。