如何在SHCreateDirectoryEx()中使用SECURITY_ATTRIBUTES ?
How do we use SECURITY_ATTRIBUTES with SHCreateDirectoryEx()?
我的要求如下:
- 在指定位置创建目录。
- 设置其属性,使文件夹为"只读"。换句话说,用户帐户不能在这个文件夹中创建文件夹/文件。
现在,我可以创建如下目录:
SHCreateDirectoryEx( NULL, <path>.c_str(), NULL );
我现在想设置适当的安全属性。任何帮助/代码示例将不胜感激。
平台:Win7 (Lang: 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
函数。
相关文章:
- 在 c++ WWSAPI Web 服务中处理 WS-Security PasswordDigest 模式
- "C4649: attributes are ignored in this context"的含义是什么?
- 如何设置com.apple.security.smartcard在应用程序中的权利
- system.security.cryptography.openssl如何调用openssl函数
- C++ const std:string&security 当传递给第三方 API
- format不是字符串文字,也没有格式参数[-Wformat security]
- 由windows . security . cryptographic . cryptographicbuffer中的方
- gSOAP C++: nillable attributes
- 设置 AD 标志时获取"The security ID structure is invalid"
- 为什么 boost::thread 构造函数不接受 boost::thread::attributes 参数?
- Win32 C++ PRINTER_INFO_2 attributes
- 了解 MSVC++ 中的"Buffer Security Check /GS"编译器选项