Форум: "Сети";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Вниз
Как определить группу в которой находится юзер? Найти похожие ветки
← →
Matrex © (2004-12-25 23:31) [0]Как определить группу в локальной сети в которой находится юзер?
← →
Matrex © (2004-12-25 23:34) [1]Сори... Добавлю: Подойдел любой вариант - по IP, по имени в сети...
← →
Яичница © (2004-12-26 04:10) [2]Код написан не кошерно, надо приводить в порядок...Но думаю. что в качестве толчка в нужном направлении сойдет. -)
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
GROUP_USERS_INFO_0 = record
grui0_name:PWideChar;
end;
var
LibHandle: LongWord;
NetUserGetGroup:function(
lpwServer: PWideChar;
lpwUser : PWideChar;
level:DWORD;
bufptr:PBYTE;
prefmaxlen:DWORD ;
var entriesread:DWORD ;
var totalentries :DWORD
):cardinal stdcall;
Form1: TForm1;
function GetUserGroups(lpwServer,lpwUser : PWideChar) :Cardinal;
implementation
{$R *.dfm}
function GetUserGroups(lpwServer,lpwUser : PWideChar) :Cardinal;
type
TUserGroupArray = array of GROUP_USERS_INFO_0;
var
pBuffer : Pointer;
dwRead, dwTotal, i : Cardinal;
dwErr : integer;
UserGroupArray : array [0..100] of GROUP_USERS_INFO_0;
begin
pBuffer:=@UserGroupArray;
dwRead:=0;
ZeroMemory(pBuffer,SizeOf(UserGroupArray));
// здесь навести порядок!!!
// надо использовать NetApiBufferAlloc
//Pointer to the buffer in which the data set with the level parameter is stored.
//The buffer passed in must have been previously allocated with NetApiBufferAlloc.
// The returned buffer should be deallocated using the NetApiBufferFree function.
@NetUserGetGroup := nil;
LibHandle:=LoadLibrary("NETAPI32.DLL");
if LibHandle = 0 then
begin
// Обработать ошибку и выйти
end
else
begin
@NetUserGetGroup:=GetProcAddress(LibHandle,"NetUserGetGroups");
if @NetUserGetGroup <> nil then
begin
Result:=NetUserGetGroup(lpwServer,lpwUser,0,pBuffer,255,dwRead,dwTotal);
if Result = 0 then
for i:=0 to dwRead-1 do
//ну, это уж совсем не кошерно -)
Form1.ListBox1.Items.Add(WideCharToString(TUserGroupArray(pBuffer^)[i].grui0_name));
end;
end;
// NetApiBufferFree(pBuffer); - здесь навести порядок
FreeLibrary(LibHandle);
end;
//Пример использования
procedure TForm1.Button1Click(Sender: TObject);
var s,u: widestring;
Err: cardinal;
begin
s:=WideString("Server");
u:=WideString("User");
Err:=GetUserGroups(@s[1],@u[1]);
.....
end;
end.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c