Сейчас на форуме: zombi-vadim, tyns777 (+5 невидимых)

 eXeL@B —› Программирование —› Список компьютеров домена (Delphi)
Посл.ответ Сообщение


Ранг: 95.2 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 30 октября 2007 02:19
· Личное сообщение · #1

Собственно интересует не тормозной способ получения списка всех компов заданного домена, при условии, что компов в сети переваливает за 300....и код нужен именно на Дельфях....
Может быть есть какие-то варианты выдрать эти данные из DHCP или AD? Хотя в DHCP эти данные могут оказаться наверное не совсем актуальными?
Вобщем помогите, горю!

-----
бессмысленные манипуляции не становятся более разумными если их повторять




Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 30 октября 2007 02:28
· Личное сообщение · #2

/cmd.exe arp -a ?

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE




Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 30 октября 2007 03:40
· Личное сообщение · #3

ProTeuS пишет:
/cmd.exe arp -a ?

а с чего ты взял что все они будут в arp кэше?
и вообще - arp никакого отношения не имеет к доменам



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 30 октября 2007 03:44
· Личное сообщение · #4

SecurAdmin
посмотри в сторону IADsDomain или WNetOpenEnum/WNetEnumResource (их использует плагин network для far)



Ранг: 37.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 30 октября 2007 07:45 · Поправил: sss
· Личное сообщение · #5

Тебе необходимо перечислить учетные записи домена и выбрать тип компьютер. Можно использовать NetUserEnum. Система сама обратится к IADsXXX функциям.

В свое время именно после такой же темы я бросил использовать Delphi. Постоянно отсутствовали аналоги .h и lib файлов.



Ранг: 22.6 (новичок)
Активность: 0.010
Статус: Участник

Создано: 01 декабря 2007 14:10
· Личное сообщение · #6

можно так, но тормоз всетаки присудствует

unit FindComp;

interface

uses
Windows, Classes;

function FindComputers: DWORD;

var
Computers: TStringList;

implementation

uses
SysUtils;

const
MaxEntries = 250;

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.Clear;

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, 3, Length(EnumComputerBuffer[J].lpRemoteName) - 2));
WNetCloseEnum(EnumComputerHandle);
end;
end;
end;
WNetCloseEnum(EnumWorkGroupHandle);
end;

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

end;

initialization

Computers := TStringList.Create;

finalization

Computers.Free;

end.



Ранг: 35.1 (посетитель), 1thx
Активность: 0.010
Статус: Участник

Создано: 03 декабря 2007 09:54
· Личное сообщение · #7

Попробуй вот это: rouse.drkb.ru/network.php#domaininfo
У меня не тормозило никогда


 eXeL@B —› Программирование —› Список компьютеров домена (Delphi)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати