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