Сканирование доменов локальной сети

Материал из DRKB


Переменная List заполняется списком доменов. Функция возвращает код ошибки обращения к сети.

function FillNetLevel(xxx: PNetResource; list: TStrings): Word;
type
  PNRArr = ^TNRArr;
  TNRArr = array[0..59] of TNetResource;
var
  x: PNRArr;
  tnr: TNetResource;
  I: integer;
  EntrReq, SizeReq, twx: Integer;
  WSName: string;
begin
  Result := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
                         RESOURCEUSAGE_CONTAINER, xxx, twx);
  if Result = ERROR_NO_NETWORK then Exit;
  if Result = NO_ERROR then
  begin
    New(x);
    EntrReq := 1;
    SizeReq := SizeOf(TNetResource) * 59;
    while (twx <> 0) and (WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
    begin
      for i := 0 to EntrReq - 1 do
      begin
        Move(x^[i], tnr, SizeOf(tnr));
        case tnr.dwDisplayType of
          RESOURCEDISPLAYTYPE_DOMAIN:
          begin
            if tnr.lpRemoteName <> '' then
              WSName:= tnr.lpRemoteName
            else
              WSName:= tnr.lpComment;
            list.Add(WSName);
          end;
        else
          FillNetLevel(@tnr, list);
        end;
      end;
    end;
    Dispose(x);
    WNetCloseEnum(twx);
  end;
end;


Источник: http://dmitry9.nm.ru/info/ ID: 03307

См. также[править | править код]