C# 具有安全描述符的CreateFile添加用户但不添加权限

C# 具有安全描述符的CreateFile添加用户但不添加权限,c#,c++,winapi,C#,C++,Winapi,我需要创建一个新文件夹,我需要让每个人都可以访问它。我发现它可以使用安全描述符来完成,所以我在C++中找到了一些代码示例,并尝试创建目录。它确实创建了文件夹,但出现了一个问题,用户被添加到“安全”选项卡,但它在“拒绝”或“允许”上没有检查除“允许特殊权限”之外的所有选项。我认为我做错了什么(尽管失败时我从MSDN和其他地方复制了代码,但结果都是一样的)。所以我在C#中尝试了同样的方法,得到了完全相同的结果 我使用的代码是(C#): 我尝试了几种用户帐户、权限和允许/拒绝的组合,但都得到了相同的结

我需要创建一个新文件夹,我需要让每个人都可以访问它。我发现它可以使用安全描述符来完成,所以我在C++中找到了一些代码示例,并尝试创建目录。它确实创建了文件夹,但出现了一个问题,用户被添加到“安全”选项卡,但它在“拒绝”或“允许”上没有检查除“允许特殊权限”之外的所有选项。我认为我做错了什么(尽管失败时我从MSDN和其他地方复制了代码,但结果都是一样的)。所以我在C#中尝试了同样的方法,得到了完全相同的结果

我使用的代码是(C#):

我尝试了几种用户帐户、权限和允许/拒绝的组合,但都得到了相同的结果,添加了用户,但没有检查。还有什么需要补充的吗?这不是一个5分钟的搜索,我尝试了大约2天(几个星期),尝试了很多组合(但那是在C++中)。C#似乎是一个无名小卒,但却产生了同样的东西


检查“高级安全设置”对话框。另外,看看完整的构造函数。希望这澄清了在简单安全性对话框中对目录的“完全控制”意味着对目录本身及其子目录和文件(即
ContainerInherit | ObjectInherit
)的完全控制,并可以选择将继承传播限制为仅“此容器中的对象和/或容器”(即,
NoPropagateInherit
)。实际上,我特别想在创建时将其设置为拥有所有权限,因为我可能在创建后没有这些权限。即使如此,我担心如果没有足够的权限,我可能无法创建它。请查看“高级安全设置”对话框。另外,请查看完整的构造函数。希望这能澄清这一点在简单安全对话框中对目录的“完全控制”意味着对目录本身及其子目录和文件(即
ContainerInherit | ObjectInherit
)的完全控制,并且可以选择将继承传播限制为仅“此容器中的对象和/或容器”(即
NoPropagateInherit
).事实上,我特别想在创建时将其设置为拥有所有权限,因为之后可能没有这些权限。即使如此,如果没有足够的权限,我恐怕也无法创建它。
using System;
using System.IO;
using System.Security.AccessControl;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectorySecurity securityRules = new DirectorySecurity();
            securityRules.AddAccessRule(new FileSystemAccessRule(@"Everyone", FileSystemRights.FullControl,AccessControlType.Allow));

            DirectoryInfo di = Directory.CreateDirectory(@"C:\sharpTest", securityRules);
        }
    }
}