【问题标题】:How do I enumerate web folders in C# that are not mapped to network drives (like "net use")如何在 C# 中枚举未映射到网络驱动器的 Web 文件夹(如“网络使用”)
【发布时间】:2015-01-23 14:46:25
【问题描述】:

在命令行中,可以不带任何参数调用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 文件夹的 Web 客户端网络连接。

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

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

【问题讨论】:

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


    【解决方案1】:

    我相当确定 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

    【讨论】:

    • 注册表不是最佳的。我会对 Win32 API 感兴趣。当然,我希望“网络使用”正在调用某些 Windows API。
    • 链接中有一个解决方案使用 DirectoryEntry 它使用 ActiveDs com 对象
    • 我尝试了使用 DirectoryEntry 的示例代码,但它没有提供我需要的内容。它为“localhost”返回所有本地定义的文件夹共享。那不是我需要的。我可以从 Windows API NetShareEnum 获得这些。我正在寻找的是根据我在 Web 客户端网络上显示的示例(通过“网络使用”配置)到远程 Web 文件夹的特定网络连接。
    • 认为你可能有你需要的东西在这里也似乎是一个重复所以stackoverflow.com/questions/8918477/…codeproject.com/Articles/2939/Network-Shares-and-UNC-paths
    • 您提到的副本是我 2 年前发布的帖子。它不完全相同。当时我正在寻找浏览所有类型的文件夹和共享,这些文件夹和共享映射网络驱动器或配置为网络位置。我已经解决了这些要求。给出的响应是枚举本地文件夹共享或 WMI 的解决方案。同样,手头的这个特定问题非常具体地是关于通过“网络使用”建立的远程 Web 文件夹的网络连接,而不是本地文件夹共享,不是映射的网络驱动器,也不是“Windows 网络位置”。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多