Поиск файлов в расшареных папках LAN

Тема в разделе "WASM.BEGINNERS", создана пользователем stbzh, 5 сен 2005.

  1. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    Хочу написать программу, которая бы лазила по открытым папкам в локальной сети (домены на Windows 2000) с целью поиска файлов mp3, avi и т.п. и записывала бы названия этих файлов в текстовый файл.

    Какой механизм использовать? каков должен быть алгоритм? есть ли где исходники такого типа?
     
  2. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Получаеш все компы в сети.В цыкле пробегаешся по списку в поисках ресурсов (NetShareEnum - см. мсдн). Далее рулиш по списку ресурсов и ищешь файлы как на локале.
     
  3. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    Ок, достаточно доходчиво.

    конечно, облегчило бы задачу название функции, которой можно компы в сети получить. впрочем найду - МСДН для меня дом родной!

    спасибо!
     
  4. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    hf gl =)
     
  5. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    Я уже добился того, что с помощью NetServerEnum нахожу все машины в домене.

    Далее, NetShareEnum находит расшаренные папки, а FindFirstFileEx и FindNextFile сканят саму папку.

    Но ведь мне нужен список всех компов во всей сети а не в моем домене!

    Я пытался с параметрами NetServerEnum поиграться, но пока ничего не вышло :-(

    Есть еще идеи?
     
  6. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Во всей сети ето как, локалка или ты хочеш всю глобалку просканить ?? ))







    В NetServerEnum есть поле Domain у тебя наверное оно NULL, если нада по всем групам тогда получи список груп, а далее так как делаеш. Ты с ним тоже игрался ?



    Я когда-то тоже таким страдал ... посмотрю может сурсы остались.

    У меня были фичи типа сканить все групы или рeндж айпишек.
     
  7. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Сурса нет ...

    Но помню я там юзал WNetOpenEnum , WNetEnumResource ... Можеш порыться в мсдн по данным функциям ...
     
  8. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
  9. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    В Дельфях я не очень - самое общее только...

    врочем, разберусь.

    подкинули мне идейку сканить весь диапазон IP адресов. вот только опять же, какой набор функций использовать и каков общий алгоритм???

    у нас локалка с доменами. на моем домене около десятка компов. доменов штук 30 и в каждом тоже по 5-20 компов. так вот, список только моего домена вылетает, хотя если я забиваю имя другого компа из другого домена - прога его нормально находит и исправно показывает список его шар (это я к тому, что менял NULL на имя компа из другого домена)...
     
  10. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290




    Можеш пинговать (если впадло самому писать модуль для пинга найди в инете ... codeproject), можеш коннектиться на системний порт (135 , ...) (winsock!connect и т.д.), если удачно тогда получаеш имя компа (или по IP), а далее как в предыдущий раз.
     
  11. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    вот кусок, разобраться можно
    Код (Text):
    1.  
    2. ;---
    3. vzt_net_res proc nom:DWORD, lpnetres:DWORD, vhod:DWORD
    4. Local h_ntr_1_lc:DWORD, sc_ntr_lc, razmer_ntr_1_lc
    5. Local m10:strukt_memory
    6. Local tx1_lc[256]:byte
    7. Local tx2_lc[256]:byte
    8.  
    9. Local nr_lc:NETRESOURCE
    10. Local tx3_lc[256]:byte
    11. Local tx4_lc[256]:byte
    12.  
    13. pushad
    14.  inc [uroven]
    15.  
    16.  invoke fill_memory, ADDR m10, SIZEOF strukt_memory, 0
    17.  
    18.  invoke WNetOpenEnum, RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, lpnetres, ADDR h_ntr_1_lc
    19.  .if eax!=NO_ERROR
    20.   clc
    21.   jmp @@100
    22.  .endif
    23.  
    24.  mov eax, 0FFFFFFFFh
    25.  mov [sc_ntr_lc], eax
    26.  mov [razmer_ntr_1_lc], 32768
    27.  invoke create_memory, ADDR m10, 32768
    28.  
    29.  invoke WNetEnumResource, [h_ntr_1_lc], ADDR sc_ntr_lc, [m10.mem], ADDR razmer_ntr_1_lc
    30.  .if eax!=NO_ERROR
    31.   clc
    32.   jmp @@100
    33.  .endif
    34.  
    35.  obman_win
    36.  
    37.  mov eax, [m10.mem]
    38.  mov ecx, [sc_ntr_lc]
    39.  CP ecx, 0, Z, @@50
    40.  @@1:
    41.   test [eax+NETRESOURCE.dwUsage], RESOURCEUSAGE_CONTAINER
    42.   jz @@5
    43.   invoke Baze_add_str, nom
    44.   invoke set_struk_iz_bz_y, nom, [n_obr_row], eax
    45.   .if [vhod]!=0
    46.    invoke vzt_net_res, nom, eax, vhod
    47.   .endif
    48.   @@5:
    49.    
    50.   @@20:
    51.   add eax, SIZEOF NETRESOURCE
    52.  dnz ecx, @@1
    53.  
    54.  @@50:
    55.  
    56. @@kon: stc
    57. @@100:
    58. pushfd
    59. invoke WNetCloseEnum, [h_ntr_1_lc]
    60. invoke close_memory, ADDR m10
    61. dec [uroven]
    62. popfd
    63.  
    64. popad
    65. ret
    66. vzt_net_res endp
    67.  
     
  12. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    yureckor спасибо, как раз перед тем как сегодня заглянуть в инет я нашел пример реализации именно этого алгоритма с использованием семейства функций WNet в MSDN July 2004.

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

    но я обязательно проверю вариант с пингом...