Текущий архив: 2004.09.12;
Скачать: CL | DM;
Вниз
Имена компьютеров в сети Найти похожие ветки
← →
555 (2004-07-09 12:58) [0]Доброго времени суток!
Как найти имена всех компьютеров сети, и засунуть этот список например в КомбоБокс. Или можно ли вытащить этот список откуда нибудь с ВИНДОВозного сервака?
Заранее благодарен
← →
Rouse_ © (2004-07-09 13:02) [1]В качестве демки:
procedure TForm1.Button1Click(Sender: TObject);
var
S: TStringList;
begin
S := TStringList.Create;
try
GetAllUsersFromDomain(S);
Memo1.Text := S.Text;
finally
S.Free;
end;
end;
procedure GetAllUsersFromDomain(var List: TStringList);
var
Buffer, tmpBuffer: Pointer;
PrefMaxLen : Integer;
Resume_Handle : DWORD;
EntriesRead : DWORD;
TotalEntries : DWORD;
I, Size : Integer;
{NickName, }Serv : String;
PSrvr : PWideChar;
begin
List.Clear;
PSrvr := nil;
try
// Ïåðåâîäèì èìÿ êîìïüþòåðà òèïà PWideChar
Serv := "\\" + GetDomainName;
Size := Length(Serv);
GetMem(PSrvr, Size * SizeOf(WideChar) + 1);
StringToWideChar(Serv, PSrvr, Size + 1);
PrefMaxLen := -1;
EntriesRead := 1;
TotalEntries := 1;
Resume_Handle := 0;
Buffer := nil;
// Ïîëó÷àåì ñïèñîê ïîëüçîâàòåëåé íà êîìïüþòåðå èç PSrvr
if NetUserEnum(PSrvr, 11, 0, @Buffer, PrefMaxLen, @EntriesRead,
@TotalEntries, @Resume_Handle) = S_OK then
begin
tmpBuffer := Buffer;
for I := 0 to TotalEntries - 1 do
begin
List.Add("usri11_name " + USER_INFO_11(tmpBuffer^).usri11_name);
List.Add("usri11_comment " + USER_INFO_11(tmpBuffer^).usri11_comment);
List.Add("usri11_usr_comment " + USER_INFO_11(tmpBuffer^).usri11_usr_comment);
List.Add("usri11_full_name " + USER_INFO_11(tmpBuffer^).usri11_full_name);
List.Add("usri11_priv " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_priv));
List.Add("usri11_auth_flags " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_auth_flags));
List.Add("usri11_password_age " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_password_age));
// if USER_INFO_11(tmpBuffer^).usri11_home_dir <> nil then
// List.Add("usri11_home_dir " + USER_INFO_11(tmpBuffer^).usri11_home_dir);
List.Add("usri11_parms " + USER_INFO_11(tmpBuffer^).usri11_parms);
List.Add("usri11_last_logon " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_last_logon));
List.Add("usri11_last_logoff " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_last_logoff));
List.Add("usri11_bad_pw_count " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_bad_pw_count));
List.Add("usri11_num_logons " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_num_logons));
List.Add("usri11_logon_server " + USER_INFO_11(tmpBuffer^).usri11_logon_server);
List.Add("usri11_country_code " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_country_code));
List.Add("usri11_workstations " + USER_INFO_11(tmpBuffer^).usri11_workstations);
List.Add("usri11_max_storage " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_max_storage));
List.Add("usri11_units_per_week " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_units_per_week));
//List.Add("usri11_logon_hours " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_logon_hours));
List.Add("usri11_code_page " + IntToStr(USER_INFO_11(tmpBuffer^).usri11_code_page));
List.Add("======================================================");
Resume_Handle := 0;
tmpBuffer := Pointer(DWORD(tmpBuffer) + SizeOf(USER_INFO_11));
end;
end;
finally
NetApiBufferFree(Buffer);
FreeMem(PSrvr);
end;
end;
← →
Rouse_ © (2004-07-09 13:05) [2]В NetUserEnum заместо третьего параметра можешь подставлять фильтры
FILTER_TEMP_DUPLICATE_ACCOUNT = ($0001);
FILTER_NORMAL_ACCOUNT = ($0002);
FILTER_INTERDOMAIN_TRUST_ACCOUNT = ($0008);
FILTER_WORKSTATION_TRUST_ACCOUNT = ($0010);
FILTER_SERVER_TRUST_ACCOUNT = ($0020);
← →
Rouse_ © (2004-07-09 13:06) [3]Структуру забыл :)
_USER_INFO_11 = record
usri11_name: LPWSTR;
usri11_comment: LPWSTR;
usri11_usr_comment: LPWSTR;
usri11_full_name: LPWSTR;
usri11_priv: DWORD;
usri11_auth_flags: DWORD;
usri11_password_age: DWORD;
usri11_home_dir: LPWSTR;
usri11_parms: LPWSTR;
usri11_last_logon: DWORD;
usri11_last_logoff: DWORD;
usri11_bad_pw_count: DWORD;
usri11_num_logons: DWORD;
usri11_logon_server: LPWSTR;
usri11_country_code: DWORD;
usri11_workstations: LPWSTR;
usri11_max_storage: DWORD;
usri11_units_per_week: DWORD;
usri11_logon_hours: Pointer;
usri11_code_page: DWORD;
end;
USER_INFO_11 = _USER_INFO_11;
PUSER_INFO_11 = ^_USER_INFO_11;
LPUSER_INFO_11 = ^_USER_INFO_11;
← →
Игорь Шевченко © (2004-07-09 13:16) [4]А причем тут юзеры ? :)
← →
Rouse_ © (2004-07-09 14:44) [5]О блин, действительно, чтото я вначале как про юзвера прочитал :)
Ну тогда NetServerEnum :)
← →
Pul (2004-07-09 15:19) [6]А где объявлены функции NetServerEnum, NetUserEnum?
← →
Rouse_ © (2004-07-09 16:36) [7]Что-то вроде этого:
function NetUserEnum( ServerName: LPCWSTR;
Level: DWORD;
Filter: DWORD;
BufPtr: Pointer;
PrefMaxLen: DWORD;
EntriesRead: LPDWORD;
TotalEntries: LPDWORD;
ResumeHandle: LPDWORD ): LongInt; stdcall; external "netapi32.dll";
function NetServerEnum(servername: LMCSTR; level: DWORD; var bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD; servertype: DWORD; domain: LMCSTR; var resume_handle: DWORD): LongInt; stdcall; external "netapi32.dll";
stdcall; external "netapi32.dll" name "NetServerEnum";
function NetApiBufferFree(Buffer: Pointer): DWORD; stdcall;
external "netapi32.dll" name "NetApiBufferFree";
Страницы: 1 вся ветка
Текущий архив: 2004.09.12;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.032 c