Forums: Enumerate Workgroup - Forums

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Enumerate Workgroup looking for Enumerate network computers

#1 Guest_Neo__*

  • Group: Guests

Posted 20 July 2004 - 04:47 PM

Little .dpr i've modded from http://www.infojet.c...ps/tip0012.html
Too tired to find how to enumerate network computers, if someone could release it in delphi ^^...

program EnumWrkGrp;

{$APPTYPE CONSOLE}

uses
  Windows,
  Classes,
  sysutils;

const maxentries=250;

var computers:TStringList;

function FindComputers: DWORD;

var
  EnumWorkGroupHandle,
  EnumComputerHandle  : THandle;
  EnumError           : DWORD;
  Network             : TNetResource;
  WorkGroupEntries,
  ComputerEntries     : DWORD;
  EnumWorkGroupBuffer,
  EnumComputerBuffer : array[1..MaxEntries] of TNetResource;
  EnumBufferLength    : DWORD;
  I, J                : DWORD;

begin

  Computers := TStringList.Create;
  FillChar(Network, SizeOf(Network), 0);
  with Network do
  begin
    dwScope := RESOURCE_GLOBALNET;
    dwType := RESOURCETYPE_ANY;
    dwUsage := RESOURCEUSAGE_CONTAINER;
  end;

  EnumError := WNetOpenEnum(RESOURCE_GLOBALNET,
                            RESOURCETYPE_ANY, 0,
                            @Network,
                            EnumWorkGroupHandle);

  if EnumError = NO_ERROR then
  begin
    WorkGroupEntries := MaxEntries;
    EnumBufferLength := SizeOf(EnumWorkGroupBuffer);
    EnumError := WNetEnumResource(EnumWorkGroupHandle,
                                 WorkGroupEntries,
                                 @EnumWorkGroupBuffer,
                                 EnumBufferLength);

    if EnumError = NO_ERROR then
    begin
      for I := 1 to WorkGroupEntries do
      begin
        EnumError := WNetOpenEnum(RESOURCE_GLOBALNET,
                                RESOURCETYPE_ANY, 0,
                                @EnumWorkGroupBuffer[I],
                                EnumComputerHandle);
        if EnumError = NO_ERROR then
        begin
          ComputerEntries := MaxEntries;
          EnumBufferLength:= SizeOf(EnumComputerBuffer);
        EnumError:=WNetEnumResource(EnumComputerHandle,
                                    ComputerEntries,
                                    @EnumComputerBuffer,
                                    EnumBufferLength);
          if EnumError = NO_ERROR then
            for J := 1 to ComputerEntries do
              Computers.Add(Copy(EnumComputerBuffer[J].
               lpRemoteName, 1,
              Length(EnumComputerBuffer[J].
               lpRemoteName)));
          WNetCloseEnum(EnumComputerHandle);
        end;
      end;
    end;
    WNetCloseEnum(EnumWorkGroupHandle);
  end;

  if EnumError = ERROR_NO_MORE_ITEMS then
    EnumError := NO_ERROR;
  Result := EnumError;

end;

begin
  { TODO -oUser -cConsole Main : placez le code ici }
  writeln('EnumWrkGrp 1.0 by ...');
  findcomputers;
  writeln('Enum ended');
  computers.SaveToFile('WrkGrp.txt');
  Computers.Free;
end.


Type EnumWrkGrp.exe
then type WrkGrp.txt

type WrkGrp.txt

Novell Directory Services
NetWare Servers
APR
CPTR
MTS
NEWS
WORKGROUP
WVUA7

Attached File(s)


0

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users

  • Share



Our Sponsors:


SwiftLayer Affiliate Web Hosting