Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
6-1089017150
Анонимщик
2004-07-05 12:45
2004.09.12
TServerSocket OnClientDisconnect


1-1093357599
барбос
2004-08-24 18:26
2004.09.12
бесконечный цикл


14-1093018781
Igorek
2004-08-20 20:19
2004.09.12
Патч для TApplication (помидорами не бросаться!!!) :-)))


14-1092988369
WondeRu
2004-08-20 11:52
2004.09.12
Ненавижу писать хелп на свои проги,... :-(((


3-1092729831
Wolfram
2004-08-17 12:03
2004.09.12
Непонятный глюк с ADO.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский