我已经设置了一项任务,允许用户输入UNC路径(即 \\ bla.org.dom \ temp \ test \ lower )并从最低文件夹到最高文件夹,构建对每个文件夹具有读/写权限的组和用户的列表。我花了很长时间看看activedirectory服务,并且只有死胡同。虽然我对c#非常了解,但activedirectory和ldap似乎已经过去了。任何有关材料的建议都将受到欢迎。
由于这是我的第一篇文章,欢迎对我的问题格式提出任何批评!
编辑:鉴于使用Directory Security方法和AccessRules的进一步研究,我已经到了可以递归调用帐户名列表的阶段。这接近我的需要,但我发现实现它更难以调用unc路径。答案 0 :(得分:0)
答案本身位于DirectoryInfo和DirectorySecurity名称空间内。使用前面从checking-for-directory-and-file-write-permissions-in-net提供的信息,我设法创建了一个递归调用方法,该方法生成在文件夹上有读/写的用户/组列表,从顶部开始并向下到最低目录。
string dir = "";
if (input.Text.Contains(@"\\"))
{
dir += @"\\";
}
string[] folders = input.Text.Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string folder in folders)
{
if (dir.Contains(@"\\") && folder == folders[0])
{
dir += folder + @"\";
}
else
{
dir += folder + @"\";
ResultGroup newbox = new ResultGroup(folder);
newbox.label1.Click += (x, y) =>
{
splitContainer1.Panel2Collapsed = false;
listBox1.Items.Add(newbox.label1.Text);
};
flowLayoutPanel1.Controls.Add(newbox);
DirectoryInfo di = new DirectoryInfo(dir);
DirectorySecurity ds = di.GetAccessControl();
foreach (AccessRule rule in ds.GetAccessRules(true, true, typeof(NTAccount)))
{
newbox.listBox1.Items.Add(string.Format("{0}", rule.IdentityReference.Value));
}
}
}
这允许用户输入本地路径,例如“C:\ Temp \ Test Folder”或UNC路径“\ Server \ Share \ Temp \ Network Test Folder”,然后逐个文件夹处理,填充我用来显示数据的表单。