C# 以编程方式获取组列表用户权限Windows 2003中文件夹的特殊权限

C# 以编程方式获取组列表用户权限Windows 2003中文件夹的特殊权限,c#,security,permissions,ntfs,C#,Security,Permissions,Ntfs,我使用Windows2003Server,我需要获得有关安全文件夹的信息,使用C#编程 我想创建一个用于检查权限的工具。我需要获取文件夹的组、用户、权限和特殊权限 C:\Documents and Settings\All 用户\应用程序 数据\Microsoft\Crypto\RSA\MachineKeys 编辑: 下面是GetSecurityDescriptorSddlForm方法的示例代码 public static string GetObjectPermission(string fu

我使用Windows2003Server,我需要获得有关安全文件夹的信息,使用C#编程

我想创建一个用于检查权限的工具。我需要获取文件夹的组、用户、权限和特殊权限

C:\Documents and Settings\All 用户\应用程序 数据\Microsoft\Crypto\RSA\MachineKeys

编辑:

下面是GetSecurityDescriptorSddlForm方法的示例代码

public static string GetObjectPermission(string fullFolderName)
{
    FileSecurity fileSecure = File.GetAccessControl(fullFolderName);
    StringBuilder acer = new StringBuilder();
    fileSecure.GetSecurityDescriptorSddlForm(AccessControlSections.All);

    foreach (FileSystemAccessRule ace in fileSecure.GetAccessRules(true, true, typeof(NTAccount)))
    {
        acer.Append(ace.FileSystemRights + ":" + ' ' + ace.IdentityReference.Value + "\n");
    }
    return acer.ToString();
}
此示例代码将显示哪个NTAccount可以修改或读取文件夹,例如此函数

如何获得组和特殊权限


有任何示例代码、建议吗?

能否使用DirectoryInfo获取ACL?所有ACL都应在其中(用户、组):

完整文档:

如果要获取文件夹上ACL中的所有ace列表,应使用此方法,还可以使用此方法访问其他ace属性,如 ace.AccessControlTypeace.IsInhered

 public static void checkAceInformation(string fileName,string loginName)
        {
            string fileSystemRightsValue = "";

            FileSecurity security = File.GetAccessControl(FileName);

            AuthorizationRuleCollection acl = security.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));

            foreach(FileSystemAccessRule ace in acl)
            {
                if(ace.IdentityReference.Value == LoginName)
                {
                    fileSystemRightsValue = ace.FileSystemRights.ToString();

                    Console.WriteLine(LoginName +  "  your permission value is" + fileSystemRightsValue)

                    return;
                }
            }
            Console.WriteLine(LoginName + "your not permission in this folder");

        }

当你说“获得特殊权限”时,你想知道他们是否拥有这些权限,或者他们实际上是什么吗?我想知道他们是否拥有这些权限。啊,好的。因为很容易判断他们是否会选中Windows资源管理器中的“特殊权限”复选框,因为它返回一个负数。但将该数字的每个部分与权限关联起来要复杂一些。
 public static void checkAceInformation(string fileName,string loginName)
        {
            string fileSystemRightsValue = "";

            FileSecurity security = File.GetAccessControl(FileName);

            AuthorizationRuleCollection acl = security.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));

            foreach(FileSystemAccessRule ace in acl)
            {
                if(ace.IdentityReference.Value == LoginName)
                {
                    fileSystemRightsValue = ace.FileSystemRights.ToString();

                    Console.WriteLine(LoginName +  "  your permission value is" + fileSystemRightsValue)

                    return;
                }
            }
            Console.WriteLine(LoginName + "your not permission in this folder");

        }