【问题标题】:How do we use SECURITY_ATTRIBUTES with SHCreateDirectoryEx()?我们如何将 SECURITY_ATTRIBUTES 与 SHCreateDirectoryEx() 一起使用?
【发布时间】:2013-02-22 19:12:14
【问题描述】:

我的要求如下:

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

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

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

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

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

【问题讨论】:

  • SHCreateDirectoryEx 无关紧要。你的问题完全是关于SECURITY_ATTRIBUTES

标签: c++ c file directory directory-structure


【解决方案1】:

您要做的第一件事是创建一个SECURITY_ATTRIBUTES 结构,并设置它的成员。

SECURITY_ATTRIBUTES SecAttr;

SecAttr.size = sizeof(SECURITY_ATTRIBUTES); //Set size of structure

下一个成员是SECURITY_DESCRIPTOR 的类型,它实际上包含管理对该对象的安全访问所需的所有数据。

您不能按照MSDN documentation 直接创建这个结构,但是您可以使用文档中提供的函数来创建这样一个结构,根据需要设置所有必要的标志,然后获取指向它的指针以传递给@ 987654328@.

可以在here 中找到有关如何创建此类SECURITY_DESCRIPTOR 结构的示例。在此示例中,它是针对注册表项完成的,但原理是相同的。

基本上,您正在填写一个 DACL (Discretionary Security Access Control List) 或 SACL (System Access Control List,其中包含您希望对象具有的访问权限(读/写/只读)等的正确属性。

填写完整个 SECURITY_ATTRIBUTES 结构后,您可以将其传递给您的 SHCreateDirectoryEx 函数。

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2017-03-01
    相关资源
    最近更新 更多