| Автор
| Сообщение |
 spoon
Энтузиаст

Возраст: 30
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 337
Откуда: Архипелаг ГУЛАГ
|
|
|
Цитата |
|
Собственно есть ли вообще такая функция? _________________ Верь людям - только так можно узнать кому стоит верить. (c) spoon
Не можешь держать язык за зубами, держи языком зубы |
|
| В начало |
|
 |
|
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Нет. Если есть домен, то можно. А на локальной машине - так она не докладывает никому, кто там на нее залогинился _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 spoon
Энтузиаст

Возраст: 30
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 337
Откуда: Архипелаг ГУЛАГ
|
|
|
Цитата |
|
домен есть _________________ Верь людям - только так можно узнать кому стоит верить. (c) spoon
Не можешь держать язык за зубами, держи языком зубы |
|
| В начало |
|
 |
 spoon
Энтузиаст

Возраст: 30
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 337
Откуда: Архипелаг ГУЛАГ
|
|
|
Цитата |
|
Хорошая штука всё-таки эти факи
| Код: | ...
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, CommCtrl, Winsock;
const
{$IFDEF RUS}
RES_UNKNOWN = 'Íåèçâåñòíî';
{$ELSE}
RES_UNKNOWN = 'Unknown';
{$ENDIF}
WSA_TYPE = $101;
type
_WKSTA_USER_INFO_1 = record
wkui1_username: LPWSTR;
wkui1_logon_domain: LPWSTR;
wkui1_oth_domains: LPWSTR;
wkui1_logon_server: LPWSTR;
end;
WKSTA_USER_INFO_1 = _WKSTA_USER_INFO_1;
PWKSTA_USER_INFO_1 = ^_WKSTA_USER_INFO_1;
LPWKSTA_USER_INFO_1 = ^_WKSTA_USER_INFO_1;
...
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): Cardinal;
stdcall; external 'netapi32.dll';
...
function TForm1.GetUsers(const CompName : String) : String;
var
Buffer, tmpBuffer : Pointer;
PrefMaxLen : DWORD;
Resume_Handle : DWORD;
EntriesRead : DWORD;
TotalEntries : DWORD;
I, Size : Integer;
PSrvr : PWideChar;
begin
PSrvr := nil;
try
Size := Length(CompName);
GetMem(PSrvr, Size * SizeOf(WideChar) + 1);
StringToWideChar(CompName, PSrvr, Size + 1);
PrefMaxLen := DWORD(-1);
EntriesRead := 0;
TotalEntries := 0;
Resume_Handle := 0;
Buffer := nil;
if NetWkstaUserEnum(PSrvr, 1, @Buffer, PrefMaxLen, @EntriesRead,
@TotalEntries, @Resume_Handle) = S_OK then
begin
tmpBuffer := Pointer(DWORD(Buffer) + SizeOf(WKSTA_USER_INFO_1));
for I := 1 to TotalEntries - 1 do
begin
Result := Result + WKSTA_USER_INFO_1(tmpBuffer^).wkui1_username;
tmpBuffer := Pointer(DWORD(tmpBuffer) + SizeOf(WKSTA_USER_INFO_1));
end;
end
else
ShowMessage(SysErrorMessage(GetLastError));
finally
NetApiBufferFree(Buffer);
FreeMem(PSrvr);
end;
end;
... |
_________________ Верь людям - только так можно узнать кому стоит верить. (c) spoon
Не можешь держать язык за зубами, держи языком зубы |
|
| В начало |
|
 |
|