Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

Имена компьютеров в сети   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.037 c
1-1093498367
Уток
2004-08-26 09:32
2004.09.12
как узнать параметр с которым запустили мое приложение?


1-1093612527
STM
2004-08-27 17:15
2004.09.12
Скрыть курсор в TMemo


1-1093446912
sdw_syscoder
2004-08-25 19:15
2004.09.12
Сервисная служба в Windows NT


6-1088848006
atruhin
2004-07-03 13:46
2004.09.12
Потоки или порты завершения?


1-1093136182
массив
2004-08-22 04:56
2004.09.12
Почему нельзя сделать строкой динамический массив ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский