Win32:Вызовы API для получения списка доступных сетевых ресурсов на сервере?
-
23-08-2019 - |
Вопрос
Предположим, у меня есть доступ к 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)