获取本地网络服务器上所有UNC共享文件夹的列表

Mis*_*sky 16 .net c#

我正在尝试获取本地Intranet服务器上可用的所有共享文件夹的列表.

System.IO.Directory.GetDirectories()对于像这样的路径来说\\myServer\myShare,这样的工作很好,但是我得到了一条路径的例外\\myServer:

未处理的异常:System.ArgumentException:UNC路径的格式应为\ server\share.

有没有办法获取服务器的所有共享文件夹的列表?最终,我正在寻找一种方法,可以根据给定的路径处理这两种情况 - 返回给定服务器的所有共享列表,并返回给定网络共享文件夹的所有子目录列表.

Bra*_*ith 6

这是一种使用System.Management(添加对此程序集的引用)的技术:

using (ManagementClass shares = new ManagementClass(@"\\NameOfTheRemoteComputer\root\cimv2", "Win32_Share", new ObjectGetOptions())) {
    foreach (ManagementObject share in shares.GetInstances()) {
        Console.WriteLine(share["Name"]);
    }
}
Run Code Online (Sandbox Code Playgroud)

需要适当的权限.

  • 谢谢,布拉德利。您的技术可以很好地枚举本地计算机上的共享,但是当我尝试访问本地网络上的服务器时,它给了我“ System.Management.ManagementException:拒绝访问”异常。同时,其他解决方案(使用P / Invoke)对于同一台服务器也可以正常工作。 (2认同)

aja*_*hiz 5

我认为这就是您正在寻找的http://www.codeproject.com/KB/IP/networkshares.aspx

  • 谢谢,这对我有用。我最终编写了一个扩展 System.IO.Directory.GetDirectories() 的方法。它使用正则表达式来确定给定的路径类型(//server/share 或只是 //server),然后分别调用 Directory.GetDirectories() 或 CodeProject 库。 (2认同)