Как перечислить веб-папки в 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