2015-01-23 4 views
1

Из командной строки можно вызвать net use без каких-либо параметров и получить список подключений к компьютеру на локальном компьютере. Это обеспечивает список подключенных сетевых дисков, а также сетевые подключения к общим сетевым ресурсам и веб-папкам, которые были определены с помощью команды net use.Как перечислить веб-папки на C#, которые не привязаны к сетевым дискам (например, «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:  \\[email protected]\DavWWWRoot 
               Web Client Network 
         \\[email protected]\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 Использование подключение к сетевым ресурсам

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

Net Использование подключения к Web Folders

Я был в состоянии получить список веб-клиент сети серверов посредством использования API-WNetOpenEnum и WNetEnumResource для Windows, однако это не получить меня полный путь через к имени и папкам; он получает только имя сервера.

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

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

Примечание: Я не хочу решение, использующее WMI.

ответ

0

Я уверен, что класс Win32_LogicalDisk должен содержать необходимую информацию, если не попробовать реестр, примеры для обоих методов приведены в статье Get-or-List-Network-share-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

+0

реестра не является оптимальным. Мне был бы интересен API Win32. Разумеется, я ожидал бы, что «сетевое использование» вызывает некоторый Windows API. – Elan

+0

Theres решение в ссылке, которая использует DirectoryEntry, использует объект ActiveDs com – saj

+0

Я пробовал пример кода с помощью DirectoryEntry, и он не обеспечивает то, что мне нужно.Он возвращает для «localhost» все локально определенные папки. Это не то, что мне нужно. Я могу получить их из Windows NetShareEnum. То, что я ищу, - это конкретные сетевые подключения к удаленным веб-папкам в примерах, которые я показывал в веб-клиентской сети (настроенной через «сетевое использование»). – Elan