如何枚举C#中未映射到网络驱动器的Web文件夹(例如" net use")

时间:2015-01-23 14:46:26

标签: c# sharepoint webdav net-use web-folders

从命令行,可以在没有任何参数的情况下调用net use,并获取本地计算机上的计算机连接列表。这提供了映射网络驱动器的列表,以及使用net use命令定义的本地网络共享和Web文件夹的网络连接。

可以创建与本地网络共享的网络连接,如下所示:

net use \\MyComputerName\MyShareName

可以创建与Web文件夹(例如WebDAV或SharePoint)的网络连接,如下所示:

net use http://MySharePoint:12345/Shared%20Documents/MyFolder

调用net use将按以下方式列出连接:

C:\>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
Unavailable  Q:        \\OldServer\OldShare      Microsoft Windows Network
OK           U:        \\MyServerName\Name of Shared Folder
                                                Microsoft Windows Network
Unavailable  W:        http://MyOldSharePoint   Web Client Network
             X:        \\MyWebDavServer@12345\DavWWWRoot
                                                Web Client Network
                       \\MySharePoint@12345\Shared%20Documents\MyFolder
                                                Web Client Network
OK                     \\MyComputerName\MyShareName
                                                Microsoft Windows Network
OK                     \\HostName\ShareName      Microsoft Windows Network
The command completed successfully.

映射网络驱动器

我可以通过调用DriveInfo.GetDrives()来获取C#中的映射驱动器。

净使用网络共享连接

我能够获得通过PInvoke创建的网络共享的连接以及使用Windows API NetUseEnum

净使用与网络文件夹的连接

我能够通过使用Windows API WNetOpenEnumWNetEnumResource获取Web客户端网络服务器的列表,但这并没有让我获得共享名称的完整路径文件夹;它只获取服务器名称。

我无法找到获取net use允许您定义的网络文件夹的Web客户端网络连接的方法。

我确信必须有可以返回这些内容的Windows API。如果有人知道,请告知。我当然希望避免使用穷人的解决方案,例如通过命令行进程调用net use并解析其输出。

注意:我不想要使用WMI的解决方案。

1 个答案:

答案 0 :(得分:0)

我非常确定Win32_LogicalDisk类应包含您需要的信息,如果不尝试注册表,两种方法的示例都在Get-or-List-Network-shares-in-CSharp-using-WMI中制品

链接

https://msdn.microsoft.com/en-us/library/aa394173(v=vs.85).aspx

http://www.morgantechspace.com/2014/02/Get-or-List-Network-shares-in-CSharp-using-WMI.html