以编程方式使用C#显示所有用户和组的文件夹权限

时间:2014-01-07 09:31:06

标签: c# permissions directory

我正在制定一项要求,我需要使用C#以编程方式显示所有用户和组的文件夹的权限。

这里是代码,我正在使用它:

 DirectorySecurity filesecure = Directory.GetAccessControl(txtPath.Text);

 StringBuilder strbldACLlist = new StringBuilder();

 filesecure.GetSecurityDescriptorSddlForm(AccessControlSections.All);

 foreach (FileSystemAccessRule ace in filesecure.GetAccessRules(true, true, typeof(NTAccount)))
                {
                    strbldACLlist.Append(ace.FileSystemRights + ":" + ' ' + ace.IdentityReference.Value + "\n");
                }

我得到的结果如下:

"ReadAndExecute, Synchronize: dm1\\55555\nFullControl: dm1\\343556\n268435456: dm1\\343556\nFullControl: NT AUTHORITY\\SYSTEM\n268435456: NT AUTHORITY\\SYSTEM\nFullControl: BUILTIN\\Administrators\n268435456: BUILTIN\\Administrators\n"

这里,对于第一个用户,我正确获得了文件权限。但是,如果您看到第二个用户ID,即 343556 ,我会得到两次结果,因为您可以看到第一次完全控制并且有一些数字 n268435456 我没有站立

任何人都可以分析输出并解释实际发生的事情......

1 个答案:

答案 0 :(得分:1)

看看here。它说FileSystemAccessRights是一个Flags枚举(即它的值可以是or-ed)。你得到的实际数字是268435456 - 是一个没有提供名字的组合。

干杯 -