Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Узнать имя залогированного пользователя по IP или имени машины?


Иксик ©   (2005-06-07 09:50:00) 

Можно ли осуществить сабж обладая админ. правами в домене? Никак не могу найти второй из двух компьютеров с одинаковым именем...


Игорь Шевченко   (2005-06-07 12:23:00) [1]

BiN ©   (07.06.05 12:15) [5]

Я так понял, что ему наоборот, надо получить того, кто залогинился к нему :)
Вроде, оба метода приведенные мной, эту задачу хоть как-то, но решают.

С уважением,


BiN   (2005-06-07 12:15:00) [2]

Игорь Шевченко ©   (07.06.05 10:59) [4]

Если мой телепатор работает верно, то автору нужно получить имя пользователя выполнившего вход в систему на удаленной машине. Я, например, не знаю как запустить LsaEnumerateLogonSessions удаленно, а NetSessionEnum вернет информацию о пользователях, открывших соединения самого разного типа, включая шары, именнованные каналы и  т.п. Вопрос в том, будет ли пользователь из списка [LogonSessions] обязательно присутствовать в списке [NetSessionEnum].

или ой?

С уважением,


Игорь Шевченко   (2005-06-07 10:59:00) [3]

Перечислить logon-сессии (LsaEnumerateLogonSessions), например, далее найти нужного пользователя. Правов правда может потребоваться несколько больше.

Или через lanman-api, например так

procedure TfrmMain.PrintNetUsers;
type
 PSessionInfo502 = ^TSessionInfo502;
var
 curw: PSessionInfo502;
 bufw: Pointer;
 rc, read, total, resumeh: Cardinal;
 I: Integer;
 LI: TListItem;
begin
 lvNet.Items.Clear;
 resumeh := 0;
 repeat
   bufw := nil;
   rc := NetSessionEnum(LPWSTR(FServerName), nil, nil, 502,
      bufw, 2048, read, total,  @resumeh);
   if (rc <> ERROR_MORE_DATA) and (rc <> ERROR_SUCCESS) then
     Break;
   curw := PSessionInfo502(bufw);
   for I:=0 to Pred(read) do begin
     LI := lvNet.Items.Add;
     LI.Caption := curw^.sesi502_username;
     LI.SubItems.Add(curw^.sesi502_cname);
     LI.SubItems.Add(curw^.sesi502_transport);
     LI.SubItems.Add(curw^.sesi502_cltype_name);
     Inc(curw);
   end;
   if bufw <> nil then
     NetApiBufferFree(Pointer(bufw));

 until rc <> ERROR_MORE_DATA;
 if rc <> ERROR_SUCCESS then
   RaiseLastWin32Error;
end;

Удачи!


BiN   (2005-06-07 10:42:00) [4]

Что значит залогиненный пользователь? Например, на сервере терминалов.

А вообще, если домен состоит из станций с установленным WMI, то можно получить список процессов на удаленной машине и отобрать те, которые работают в контексте безопасности НЕ системной учетной записи. На Дельфи все это реализуемо, но имхо удобнее в vb.


reticon   (2005-06-07 10:10:00) [5]

RAdmin тебе поможет


АлекейК   (2005-06-07 10:09:00) [6]

nbtstat -A ip_address


Наверх

Титульная страница Поиск, карта сайта Написать письмо