Как перечислить веб-папки в C#, которые не сопоставлены с сетевыми дисками (например, "net use")

Из командной строки можно вызвать net use без каких-либо параметров и получить список подключений к компьютеру на локальном компьютере. Это обеспечивает список подключенных сетевых дисков, а также сетевых подключений к локальным сетевым папкам и веб-папкам, которые были определены с помощью net use команда.

Можно создать сетевое подключение к локальной сетевой папке следующим образом:

net use \\MyComputerName\MyShareName

Можно создать сетевое подключение к веб-папке (например, 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.

Подключенные сетевые диски

Я могу получить подключенные диски в C#, позвонив DriveInfo.GetDrives(),

Net Use Соединения с сетевыми ресурсами

Я могу получить соединения с сетевыми ресурсами, которые я создал через PInvoke и с помощью Windows API NetUseEnum,

Net Use Соединения с веб-папками

Мне удалось получить список серверов сети веб-клиента с помощью API-интерфейсов Windows WNetOpenEnum а также WNetEnumResourceОднако это не дает мне полный путь до имени общего ресурса и папок; это только получает мне имя сервера.

Мне не удалось найти способ получения сетевых подключений веб-клиента к веб-папкам, которые net use позволяет определить.

Я уверен, что должен быть Windows API, который может их вернуть. Если кто-нибудь знает, пожалуйста, сообщите. Я, конечно, хотел бы избежать использования решения бедного человека, такого как вызов net use через процесс командной строки и проанализировать его вывод.

Примечание: я не хочу решение, которое использует WMI.

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

Другие вопросы по тегам