我使用下面的代码允许Everyone访问文件夹:
System.Security.AccessControl.DirectorySecurity sec =
System.IO.Directory.GetAccessControl(directory, AccessControlSections.All);
FileSystemAccessRule accRule = new FileSystemAccessRule("Everyone",
FileSystemRights.Modify,
AccessControlType.Allow);
sec.AddAccessRule(accRule); // setACL
sec.ResetAccessRule(accRule);
Run Code Online (Sandbox Code Playgroud)
现在,Everyone用户已添加到该文件夹,但未分配任何权限.不检查所有读,写,执行等复选框.
我需要以编程方式创建一个目录,为"Everyone"组授予"完全控制"权限.如果我使用
CreateDirectory(path, NULL);
Run Code Online (Sandbox Code Playgroud)
根据Win32 SDK 文档,这将创建一个从其父目录继承的目录.我不想继承我需要的父目录的访问权限,以确保"Everyone"完全控制目录.
显然,这需要SECURITY_ATTRIBUTES使用适当的安全描述符来设置结构.我怎么做?
我的应用程序正在创建一个目录,以便我可以在其中存储日志文件.我正在为目录添加用户安全性,但我不知道如何使其传播.例如,我将用户添加everyone到目录中,并使用read和write访问,但是当我的应用程序在此目录中创建日志文件时,日志文件未继承everyone安全性(读取,写入).
我错过了什么?
DirectorySecurity dirSec = Directory.GetAccessControl(_dbPath);
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.Write, AccessControlType.Allow));
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.ReadAndExecute, AccessControlType.Allow));
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.CreateFiles, AccessControlType.Allow));
Directory.SetAccessControl(_dbPath, dirSec);
Run Code Online (Sandbox Code Playgroud)