Проблема с WNetEnumResource

Не работает перечисление компьютеров сети. Проводник свободно видит и работает с соседним компом, тот тоже.
Даже клиент-серверная прога ведёт обмен по TServerSocket и TClientSocket. А список компов сети получить не могу.

unit PForm;
 
interface
 
uses  Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls;
 
const MAX_RES = 1000;
 
type
 
  TMain = class(TForm)
    LB: TListBox;
    Start: TButton;
    procedure StartClick(Sender: TObject);
    private
      procedure NetEnumResources(Root: PNetResource);
  end;
 
  TNetEnumResourcesCallback = procedure(NetResource: TNetResource);
  PResources = ^TResources;
  TResources = array[0 .. MAX_RES-1] of TNetResource;
 
var   Main: TMain;
 
implementation {$R *.dfm}
 
procedure TMain.StartClick(Sender: TObject);
begin
  NetEnumResources(nil);
  LB.AddItem('stop', nil);
end;
 
procedure TMain.NetEnumResources(Root: PNetResource);
var
  hEnum: THandle;
  Count,
  BufferSize,
  Res: dword;
  Resources: PResources;
  i: Integer;
begin
  Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, Root, hEnum);
  if NO_ERROR <> Res then exit;
  BufferSize := SizeOf(TResources);
  GetMem(Resources, BufferSize);
  while True do begin
    Count := MAX_RES;
    Res := WNetEnumResource(hEnum, Count, Resources, BufferSize);
    if (Res <> NO_ERROR) and (Res <> ERROR_MORE_DATA) then break;
    for i := 0 to Count - 1 do begin
      with Resources^[i] do LB.AddItem('Local Name: ' + lpLocalName + ', ' + 'Remote Name: ' + lpRemoteName + ', ' + lpComment, nil);
      if (Resources^[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then NetEnumResources(@(Resources^[i]));
    end;
  end;
  FreeMem(Resources);
  WNetCloseEnum(hEnum);
  LB.AddItem('end', nil);
end;
 
end.

Может у кого есть рабочий код?