我有点迷茫,我有从网络域获取所有文件夹的任务, 例如。 (我的网络位置/整个网络/ Microsoft Windows网络/ xyNetwork)。
我必须获取所有文件夹和子文件夹,然后获取分配给此文件夹的所有安全组以及授予每个安全组的权限。
我之前做过的第二部分,第一部分是获取所有文件夹列表似乎非常复杂。
任何可能有用的指南或参考资料?
答案 0 :(得分:2)
嗯,在另一个类似条目中有一个代码列出了网络中的所有计算机名称......这是您要求的第一部分。对于第二部分,我认为你需要深入研究System.DirectoryServices
类,因为还有一些用于权限......祝你好运。
//Lists all available computer names on the network.
public static List<String> ListNetworkComputers()
{
var computerNames = new List<String>();
var computerSchema = "Computer";
var entries = new System.DirectoryServices.DirectoryEntry("WinNT:");
foreach (var domains in entries.Children)
{
foreach (var computer in domains.Children)
{
if (computer.SchemaClassName.ToLower().Contains(computerSchema .ToLower()))
{
computerNames.Add(computer.Name);
}
}
}
return computerNames;
}
我刚打印出这些值,它对我来说很好。
foreach (string lst in ListNetworkComputers())
{
Console.WriteLine("PC: " + lst);
}
(以上代码摘自:Getting computer names from my network places)
您需要从代码中访问Win32_Share WMI。 添加对System.Management.dll的引用,并使用以下代码。
VB.NET中的代码示例来自这里的主题: http://www.pcreview.co.uk/forums/finding-share-s-directory-spec-t3064222.html
VB.net程序的C#版本:
class Program
{
static void Main(string[] args)
{
var objClass = new System.Management.ManagementClass("Win32_Share");
foreach(var objShare in objClass.GetInstances())
{
Console.WriteLine(String.Format("{0} -> {1}",
objShare.Properties["Name"].Value, objShare.Properties["Path"].Value));
}
}
}
您可以将上面代码的结果与通过在Windows命令提示符中运行以下命令获得的结果进行比较:
C:\net share
这将为您提供共享名称(共享时给出的共享名称,即MySharedDir)和资源(Windows路径,即C:\ myshareddir)。
答案 1 :(得分:0)
您只需使用GetDirectories
即可。例如:
var folders = Directory.GetDirectories(@"\\server\share");
要获取所有目录(即包括子目录),请使用以下命令:
var folders = Directory.GetDirectories(@"\\server\share", "*", SearchOption.AllDirectories));