Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prakt-Storozhok.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.98 Mб
Скачать

Занятие 6. Поиск доступных сетевых ресурсов

Доступные ресурсы – это любые ресурсы компьютера (директории, дисциплины или принтеры), к которым открыт свободный доступ из сети. Если компьютер подключен к локальной сети, то для обмена файлами чаще всего делают доступными какой–нибудь диск или папку. Если компьютер имеет ещё и выход в Интернет, то к этим ресурсам можно получить доступ из любой точки Земли, если не приняты меры предосторожности.

Чтобы автоматизировать процесс поиска, используют специальные сканеры доступных ресурсов.

Цель работы: практически освоить создание простейшего сканера доступных сетевых ресурсов.

1. Теоретическое введение

В теоретическом введении рассматриваются следующие вопросы.

  • Алгоритм поиска сетевых ресурсов

  • Структура и функции для работы с сетевыми ресурсами.

    1. Алгоритм поиска сетевых ресурсов

Поиск сетевых ресурсов происходит по следующему алгоритму:

  • Заполнение структуры NETRESOURSE для определения компьютера, на котором осуществляется поиск, и типа сетевых ресурсов.

  • Открытие операции поиска с помощью функции WNetOpenEnum

  • Поиск ресурсов с помощью циклического повторения функции WNetEnumRESOURСE. Результат поиска возвращается в массив структур NETRESOURСE.

  • Прекращение операции поиска WNetCloseEnum.

1.2. Структуры и функции для работы с сетевыми ресурсами

  1. Для записи информации о ресурсах используется структура NETRESOURSE, состоящая из следующих полей:

NETRESOURСE=packed record

dwScope: DWORD;

dwType: DWORD;

dwDisplayType: DWORD;

dwUsage: DWORD;

lpLocalName: PAnsiChar;

lpRemoteName: PAnsiChar;

lpCommet: PAnsiChar;

lpProvider: PAnsiChar;

end;,

где dwScope – какие ресурсы будут включаться в перечисление. Возможны комбинации следующих значений:

  • RESOURСE_GLOBALNET – все ресурсы сети;

  • RESOURСE_CONNECTED – подключение;

  • RESOURСE_REMEMBERED – запоминание;

где dwType – тип ресурсов, включаемых в перечисление. Возможны комбинации следующих значений:

  • RESOURCETYPE_ANY – все ресурсы сети;

  • RESOURCETYPE_DISK – сетевые диски;

  • RESOURCETYPE_PRINT – сетевые принтеры;

где dwUsage – тип использования ресурсов, включаемых в перечисление. Возможны следующие значения:

  • 0 - все ресурсы сети;

  • RESOURCEUSAGE_CONNECTABLE - подключение;

  • RESOURCEUSAGE_CONTAINER – контейнерные;

dwDisplayType – как должен отображаться ресурс:

  • RESOURCEDISPLAYTYPE_DOMAIN – это домен;

  • RESOURCEDISPLAYTYPE_GENERIC – нет значения;

  • RESOURCEDISPLAYTYPE_SERVER – сервер;

  • RESOURCEDISPLAYTYPE_SHARE – разделяемый ресурс;

lpLocaiName — локальное имя. Этот параметр нужно обнулить.

lpRemoteName — удалённое имя. Здесь нужно указать UNC-имя сканируемого компьютера. Если вы указываете адрес, то вначале нужно прибавить два слеша «\\».

ipCommet – комментарий;

ipProvider — имя владельца ресурса. Если оно не известно, то нужно указать nil.

  1. После заполнения структуры нужно открыть процесс сканирования. Для этого существует функция WNetOpenEnum, имеющая структуру

function WNetOpenEnum (

dwScope,

dwType,

dwUsage: DWORD;

lpNetResource: PNetResourсe;

var lphEnum: Thandle

): DWORD; stdcall;,

где параметры dwScope, dwType, dwUsage уже рассматривались;

lpNetResource – указатель на структуру NETRESOURSE. Если этот параметр равен 0 , то перечисление начинается с самой верхней ступени иерархии сетевых ресурсов. Нуль ставится для того, чтобы получить самый первый ресурс. Затем в качестве этого параметра передаётся указатель на уже найденный ресурс. Тогда перечисление начинается с найденного и продолжится дальше, пока не найдутся все ресурсы;

lpnEnum – переменная типа THandle, которая будет использоваться в дальнейшем. После того как перечисление открыто, можно приступить к его реализации (это указатель, который понадобится в функции WNetEnumRESOURСE).

Для сканирования вызывается функция wNetEnumRESOURСE. Когда функция wNetEnumRESOURСE заканчивает перечисление, вызывается функция WNetCloseEnum.

Функция WNetEnumRESOURСE используется для поиска требуемых ресурсов. Эта функция имеет следующий вид:

function WNetEnumRESOURСE(

hEnum: THandle;

var IpcCount: DWORD;

lpBuffer: Pointer;

var lpBufferSize: DWORD

): DWORD; stdcall;,

где hEnum – указатель на возвращаемое функции WNetOpenEnum значение;

lpcCount – максимальной количество возвращаемых значений. После выполнения функция поместит сюда фактическое число найденных ресурсов;

lpBuffer – указатель на буфер, в который будет помещён результат. Массив структур TnetResource. Его длина должна быть достаточной для хранения возвращённой информации об открытых ресурсах;

lpBufferSize – размер массива, указанного предыдущем параметре.

Если поиск ресурсов произошел успешно, функция WNetEnumRESOURСE возвращает значение NO_ERROR.

Для прекращения операции поиска вызывается функция WNetCloseEnum, имеющая следующие параметры:

Function WNetCloseEnum (hEnum: THandle) ): DWORD; stdcall;,

Где в качестве hEnum нужно указать ту же переменную, которую указывали в последнем параметре при открытии перечисления wNetOpenEnum.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]