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

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

Получение имени пользователя по имени компьютера [D6, Win2k]


crazycyborg ©   (2003-11-24 11:41:00) 

Подскажите, как по имени удалённого компьютера узнать имя зарегистрированного на нём пользователя?


crazycyborg   (2003-11-26 15:24:00) [1]

БОЛЬШОЕ СПАСИБО!!!


xShadow   (2003-11-26 11:43:00) [2]


type PUserInfo0 = ^T_User_Info_0;
T_USER_INFO_0 = Record
usri0_name: LPWSTR;
End;

function NetWkstaUserEnum( ServerName: LPCWSTR;
Level: DWORD;
BufPtr: Pointer;
PrefMaxLen: DWORD;
EntriesRead: LPDWORD;
TotalEntries: LPDWORD;
ResumeHandle: LPDWORD ): LongInt; stdcall; external "netapi32.dll";

Function NetApiBufferFree( Buffer: Pointer ): DWORD; stdcall; external "netapi32.dll";

Procedure GetUsers( const Serv: String );
Var Buffer, tmpBuffer: Pointer;
PrefMaxLen : Integer;
Resume_Handle : DWORD;
EntriesRead : DWORD;
TotalEntries : DWORD;
I, Size : Integer;
NickName : String;
PSrvr : PWideChar;
Begin
Users.Clear;
PSrvr := nil;
try
// Переводим имя компьютера типа PWideChar
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 NetWkstaUserEnum( PSrvr, 0, @Buffer, PrefMaxLen, @EntriesRead, @TotalEntries, @Resume_Handle) = S_OK Then
Begin
tmpBuffer := Buffer;
For I := 0 To TotalEntries - 1 Do
Begin
NickName := PUserInfo0( tmpBuffer ).usri0_name;
Resume_Handle := 0;
// Выводим список в UsrList типа TListBox
Users.Add( NickName );
tmpBuffer := Pointer( DWORD( tmpBuffer ) + SizeOf( PUserInfo0 ) );
end;
end; {else
showmessage( "GetLastError = " + IntToStr( GetLastError ) );}
finally
NetApiBufferFree( Buffer );
FreeMem( PSrvr );
end;
End;


Собственно готовый привер!


crazycyborg   (2003-11-25 18:41:00) [3]

Спасибо, Andersen! На C++ тоже устроит, уж очень нужно!!! Так что посылай. Жду на мыле >:o)


Andersen   (2003-11-25 13:58:00) [4]

Могу прислать на мыло, но пример на C++. Если нужно - ответь, пришлю.


crazycyborg   (2003-11-25 09:40:00) [5]

А можно подробнее? Или примерчик. А то даже не могу найти модуль в котором эта функция описана (уж простите чайника) ;o).


Andersen   (2003-11-24 13:16:00) [6]

NetWkstaUserEnum


Наверх

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