C# 获取文件';当前用户.net的权限
我正在扫描文件夹中的文件,我需要以任何方式获取当前用户对每个文件的权限,并将其表示为字符串。 因此,对于附加文件的属性,我想表示如下内容 绳子 我试图像这样在扫描循环中完成这一点,但得到的是空字符串。你能暗示一下我应该从这里走到哪里,或者选择另一种方法吗?提前谢谢C# 获取文件';当前用户.net的权限,c#,.net,file,permissions,directory-security,C#,.net,File,Permissions,Directory Security,我正在扫描文件夹中的文件,我需要以任何方式获取当前用户对每个文件的权限,并将其表示为字符串。 因此,对于附加文件的属性,我想表示如下内容 绳子 我试图像这样在扫描循环中完成这一点,但得到的是空字符串。你能暗示一下我应该从这里走到哪里,或者选择另一种方法吗?提前谢谢 string permissionShort = string.Empty; DirectorySecurity dSecurity = Directory.GetAccessContr
string permissionShort = string.Empty;
DirectorySecurity dSecurity = Directory.GetAccessControl(_directory.FullName);
foreach (FileSystemAccessRule rule in dSecurity.GetAccessRules(true, true, typeof(NTAccount)))
{
if (rule.FileSystemRights == FileSystemRights.Write)
permissionShort = permissionShort + "x";
if (rule.FileSystemRights == FileSystemRights.Read)
permissionShort = permissionShort + "x";
if (rule.FileSystemRights == FileSystemRights.AppendData)
permissionShort = permissionShort + "x";
if (rule.FileSystemRights == FileSystemRights.Modify)
permissionShort = permissionShort + "x";
if (rule.FileSystemRights == FileSystemRights.ExecuteFile)
permissionShort = permissionShort + "x";
}
FileSystemRights是一个标记的枚举,这意味着您必须执行AND操作来测试枚举的单个值
string scanPath = @"C:\Test";
string permissionShort = string.Empty;
DirectorySecurity dSecurity = Directory.GetAccessControl(scanPath);
foreach (FileSystemAccessRule rule in dSecurity.GetAccessRules(true, true, typeof(NTAccount)))
{
permissionShort += rule.FileSystemRights.ToString() + " : ";
permissionShort += ((rule.FileSystemRights & FileSystemRights.FullControl) == FileSystemRights.FullControl) ? "f" : "-";
permissionShort += ((rule.FileSystemRights & FileSystemRights.Write)== FileSystemRights.Write) ? "w" : "-";
permissionShort += ((rule.FileSystemRights & FileSystemRights.Read) == FileSystemRights.Read) ? "r" : "-";
permissionShort += ((rule.FileSystemRights & FileSystemRights.AppendData) == FileSystemRights.AppendData) ? "a" : "-";
permissionShort += ((rule.FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify) ? "m" : "-";
permissionShort += ((rule.FileSystemRights & FileSystemRights.ExecuteFile) == FileSystemRights.ExecuteFile) ? "e" : "-";
permissionShort += "\n";
}
可能应该是重复的,但需要一些调整的问题。。。因此,请发表评论,而不是VTC。谢谢。它可以工作,但给出了3次结果,我怀疑它统计了系统上的所有帐户。