我有一个任务要检查特定用户是否对远程计算机上的特定文件夹具有权限,并且是否有不具有读/写/任何其他权限的文件夹,然后将其插入到HashSet中(以避免重复的值)文件夹路径)。我已经为编写了如下代码。
public static List<string> CheckFoldersPermission(List<string> folderList, string username = "")
{
foreach (var item in lstInnerDir)
{
try
{
DirectorySecurity dSecurity = Directory.GetAccessControl(item);
foreach (FileSystemAccessRule rule in dSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
if (rule.IdentityReference.Value.ToLower() == username.ToLower())
{
if (((rule.FileSystemRights & FileSystemRights.Read) == FileSystemRights.Read
|| (rule.FileSystemRights & FileSystemRights.FullControl) == FileSystemRights.FullControl))
{
// do something
}
else
{
// insert into HashSet //
}
}
}
}
catch (Exception ex)
{
// catch part...
}
}
return // HashSet
}
据我说,它应该可以正常工作,并给我一个列表列表(从HashSet转换),这些文件夹路径上我的特定用户没有读取/写入/任何权限。
千方百计,它什么也不做,那些没有允许“ X”用户阅读权限的文件夹,我的上面的代码没有在列表中插入该路径。
我现在不知道如何执行此任务。任何帮助将不胜感激。