Вниз
Скачать: CL | DM;

Как определить группу в которой находится юзер?   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
14-1108652261
XP
2005-02-17 17:57
2005.03.06
Ни ли у кого нет исходного кода конвертера RTF в HTML?


9-1101838585
Домовенок
2004-11-30 21:16
2005.03.06
[GLScene]: GLCanvas


4-1103542919
Harry_Ts
2004-12-20 14:41
2005.03.06
Дисковые процедуры низкого уровня в Delphi


1-1107779131
Zhekson
2005-02-07 15:25
2005.03.06
аналоги Sleep_а


14-1108147782
olookin
2005-02-11 21:49
2005.03.06
Линда - Беги... Ваше мнение?




   Наверх