Win32:Вызовы API для получения списка доступных сетевых ресурсов на сервере?

StackOverflow https://stackoverflow.com/questions/899995

Вопрос

Предположим, у меня есть доступ к SMB-серверу с IP 1.2.3.4, как я могу определить список доступных общих ресурсов?

Проводник Windows может сделать это, когда я ввожу UNC-путь \\1.2.3.4\ - но командная строка "dir \\ 1.2.3.4\" завершается сбоем!

Я пробовал обычные вызовы FindFirstFile / FindNext, которые я успешно использую для чтения файлов и каталогов на каждом общем ресурсе, но они не работают непосредственно на корневом сервере.

В идеале, мне нужно что-то, что работает для XP и более поздних версий.

Редактировать: Я хочу сделать это программно, а не из командной строки.Перенаправление и синтаксический анализ выходных данных из "net view 1.2.3.4" могли бы сработать, но я в идеале ищу API для этой работы.

Это было полезно?

Решение

Согласно документам, существует NetShareEnum и a WNetEnumResource функция.

Другие советы

чистый просмотр \\1.2.3.4

Проверьте http://www.ss64.com/nt/net_share.html

Редактировать:Если вы хотите сделать это программно, это выглядит следующим образом NetShareEnum ( Общий доступ к сети ) это сработало бы.

Похоже, вы можете использовать WMI для получения этой информации.Проверить этот пост для некоторых удобных руководств по PowerShell, которые показывают, как теперь использовать объект Win32_Share WMI.

Никогда не используйте WMI (не установленный изначально)
Используйте Win32 api для перечисления общих ресурсов, опубликованных миллионы раз в Google groups ( win32)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top