Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: 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 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
6-1104397819
MGWarlock
2004-12-30 12:10
2005.03.06
Проверка соединения


3-1107245378
beginnn
2005-02-01 11:09
2005.03.06
Проиндексировать


14-1108398877
Piter
2005-02-14 19:34
2005.03.06
Шутки разработчиком страниц


3-1107264156
Dima_69
2005-02-01 16:22
2005.03.06
Какие файлы нужны для работы с базами данных на голой винде.


1-1108970782
Pavelkq
2005-02-21 10:26
2005.03.06
Функция с указателем на массив (чайник)