Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Поиск файлов на удаленном компе


Автор: Cashey 10.11.2006, 16:20
Возникла такая проблема: пытаюсь найти файл удаленном компе, мне известен только IP компа и все. т.е. какие папки на нем расшарены неизвестно. Теперь, когда обращаюсь ф-цией FindFirst куда передаю в качестве параметра пути IP адрес 
(пример, )
Код

FindFirst('\\192.168.171.44'+'\*.*',faDirectory,SearchRec)

то возвращается ошибка 53. Не признает он комп как каталог, соответственно надо как-то заставить его искать каталоги, но как?

Автор: FF90h 12.11.2006, 15:20
И не получится таким образом можно сканить отдельные каталоги т.е ресурсы на компьютере но сам компьютер таким образом не просканить.    Допустим так :
FindFirst('\\192.168.171.44'+'\QWE\*.*',faDirectory,SearchRec)

А получение списка открытых шар уже отдельный вопрос.

Автор: Cashey 13.11.2006, 16:07
Цитата(FF90h @  12.11.2006,  16:20 Найти цитируемый пост)
FindFirst('\\192.168.171.44'+'\QWE\*.*',faDirectory,SearchRec)

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

Автор: _hunter 13.11.2006, 16:39
тут:
http://vingrad.ru/DELPHI-SRC-002242
среди прочего получают список дисковых ресурсов...

Автор: Cashey 14.11.2006, 15:37
Цитата(_hunter @  13.11.2006,  17:39 Найти цитируемый пост)
тут:
http://vingrad.ru/DELPHI-SRC-002242
среди прочего получают список дисковых ресурсов... 

ну я бы не сказал что уж особо то там smile
во первых, что бы запустить и посмотреть модуль в действии необходим как минимум модуль awString, которого нет в архиве.
во вторых, с виду, это тот же модуль, что и рекоммендован для поиска ресурсов в сети. Но тот модуль ищет только те шары, которые доступны в сетевом окружении. А мне нужно, что бы конкретно по IP. Так как бывает, что комп из сетевого окружения недоступен.

Автор: FF90h 15.11.2006, 14:14
1. Можно просканить подсети (ARP)
2. Кто откликнится записываем в список IP 
3. Вот и сканим шары у этих IP

 В чем проблема то ?  smile 

Автор: Cashey 16.11.2006, 11:20
Цитата(FF90h @  15.11.2006,  15:14 Найти цитируемый пост)
3. Вот и сканим шары у этих IP

вот в этом и проблема. приведенные примеры сканируют только сетевое окружение

Автор: s0neg 16.11.2006, 13:15
Вот так, например, можно получить список шар:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, WinSock;

type
  LMSTR = LPWSTR;
  NET_API_STATUS = DWORD;

  PShareInfo1 = ^_SHARE_INFO_1;
  _SHARE_INFO_1 = record
   shi1_netname: LMSTR;
   shi1_type: DWORD;
   shi1_remark: LMSTR;
  end;

  TShareInfo1 = _SHARE_INFO_1;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  function NetShareEnum(servername: LMSTR; level: DWORD; var bufptr: Pointer;
   prefmaxlen: DWORD; entriesread, totalentries,
   resume_handle: LPDWORD): NET_API_STATUS; stdcall; external 'Netapi32.dll';
  function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall; external 'Netapi32.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
type
  TShareInfo1Array = array of TShareInfo1;
var
  EntriesRead, TotalEntries: DWORD;
  Info: Pointer;
  i: Integer;
  CompName: PWideChar;
begin
  CompName := '192.168.100.1';
  if NetShareEnum(CompName, 1, Info, DWORD(-1), @entriesread, @totalentries, nil) = 0 then
    try
      if EntriesRead > 0 then
      begin
        for i := 0 to EntriesRead - 1 do
          ListBox1.Items.Add(TShareInfo1Array(@(Info^))[I].shi1_netname);
      end;
    finally
      NetApiBufferFree(Info);
    end;
end;

end.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)