2

我的要求如下:

  1. 在指定位置创建目录。
  2. 设置其属性,使文件夹为“只读”。换句话说,用户帐户不应该能够在此文件夹中创建文件夹/文件。

现在,我可以按如下方式创建目录:

SHCreateDirectoryEx( NULL, <path>.c_str(), NULL );

我现在想设置适当的安全属性。任何帮助/代码示例将不胜感激。

平台:Win7(语言:C++/C)

4

1 回答 1

4

您要做的第一件事是创建一个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函数。

于 2013-03-07T14:45:01.587 回答