![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как найти все компьютеры в рабочей группе? Для WinNT/2000/XP [NT4, Win2k, WinXP]
maguk © (2004-06-27 15:21:00)Доброго времени суток, Мастера!
Возникла проблема такого рода: нужно перечислить все раб. группы в сети и компьютеры в каждой рабочей группе. В FAQ'е уже давно нашел замечательную процедуру:
var
Computer : Array[1..500] of String[25];
ComputerCount : Integer;
procedure FindAllComputers(Workgroup: String);
Var
EnumHandle : THandle;
WorkgroupRS : TNetResource;
Buf : Array[1..500] of TNetResource;
BufSize : Integer;
Entries : Integer;
Result : Integer;
begin ComputerCount := 0;
Workgroup := Workgroup + #0;
FillChar(WorkgroupRS, SizeOf(WorkgroupRS), 0);
With WorkgroupRS do begin
dwScope := 2;
dwType := 3;
dwDisplayType := 1;
dwUsage := 2;
lpRemoteName := @Workgroup[1];
end;
WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
@WorkgroupRS,
EnumHandle);
Repeat
Entries := 1;
BufSize := SizeOf(Buf);
Result := WNetEnumResource(EnumHandle,
Entries,
@Buf,
BufSize );
If (Result = NO_ERROR) and (Entries = 1) then begin
Inc( ComputerCount );
Computer[ComputerCount] := StrPas(Buf[1].lpRemoteName);
end;
Until (Entries <> 1) or (Result <> NO_ERROR);
WNetCloseEnum(EnumHandle);
end; { Find All Computers }
...и даже сам догнал, что она не только перечисляет компютеры в раб. группе, но и сами группы (для этого достаточно передать ей в качестве параметра пустую строку). Все это дело замечательно работало в Win9x/Me, но в XP (и, как я подозреваю, во всем семействе NT), если в эту функцию передать пустую строку, то она начинает перечисление не с раб. групп, а со всяких "Microsoft Windows Network", "Web Client Network" и "Службы терминалов Microsoft". Собссно вопрос как в WinNT/2000/XP перечислить все раб. группы и компьютеры в них?
Заранее благодарен.
Rouse_ (2004-07-01 15:55:00) [1]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1088540567&n=4
maguk (2004-07-01 14:03:00) [2]up