![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Узнать имя залогированного пользователя по 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