Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从网络获取所有文件夹_C#_.net_Network Programming - Fatal编程技术网

C# 从网络获取所有文件夹

C# 从网络获取所有文件夹,c#,.net,network-programming,C#,.net,Network Programming,我有点迷路了,我的任务是从网络域中获取所有文件夹, 例如,我的网络位置/整个网络/Microsoft Windows网络/xyNetwork 我必须获取所有文件夹和子文件夹,然后获取分配给此文件夹的所有安全组以及授予每个安全组的权限 然而,我之前做过的第二部分,第一部分是获取所有文件夹的列表,这似乎非常复杂 任何可能有帮助的指南或参考资料?您只需使用即可。例如: var folders = Directory.GetDirectories(@"\\server\share"); 要获取所有目录

我有点迷路了,我的任务是从网络域中获取所有文件夹, 例如,我的网络位置/整个网络/Microsoft Windows网络/xyNetwork

我必须获取所有文件夹和子文件夹,然后获取分配给此文件夹的所有安全组以及授予每个安全组的权限

然而,我之前做过的第二部分,第一部分是获取所有文件夹的列表,这似乎非常复杂

任何可能有帮助的指南或参考资料?

您只需使用即可。例如:

var folders = Directory.GetDirectories(@"\\server\share");
要获取所有目录,即包含子目录,请使用以下命令:

var folders = Directory.GetDirectories(@"\\server\share", "*", SearchOption.AllDirectories));

嗯,在另一个类似的条目中有一个代码,列出了网络中的所有计算机名。。。这是你要求的第一部分。对于第二部分,我认为您需要深入了解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;
}
以上代码摘自:

您需要的是从代码访问Win32_共享WMI。 添加对System.Management.dll的引用并使用以下代码

VB.NET中来自以下主题的代码示例:

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共享


这将为您提供共享时提供的共享名共享名,即MySharedDir和资源窗口路径,即C:\MySharedDir。

它不是从服务器获取目录,而是获取网络中的所有工作站,然后获取这些工作站的所有目录可能的重复项不清楚,无法访问。从第一个具体问题开始,你累了什么。我似乎没有把自己说清楚。我想要的是以下内容。打开“我的网络位置”,然后打开microsoft windows网络,然后您应该会看到许多网络域,从中选择一个包含数千台PC、服务器的域。。等,然后对于每一个我想得到的文件夹和子目录列表folders@Maro-Active Directory问题的链接如何?这回答了你的问题吗?@Maro,不客气。从本质上讲,通过广播将所有计算机连接到网络上是非常耗时的。。。为什么不添加一个新的,这将需要一些时间。请稍等。消息和滚动条?heheIt不是一个用户用来显示消息的应用程序,它是一个每晚运行的应用程序,可以从公司的所有服务器获取数据
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));
        }
    }
}