Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: xinyiman - Dicembre 07, 2011, 09:47:22 am

Titolo: Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 09:47:22 am
Qualcuno di voi sa come poter capire quali utenti sono loggati su una macchina locale (sia essa windows che linux)? E sapete se esiste un protocollo per avere la stessa informazione su macchine remote?
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 11:30:09 am
Per l'utente corrente (nome, gruppo ed altre informazioni varie) le funzioni si trovano nella unit users.pp situata nella cartella users\src dei sorgenti di freepascal.

Se, poi, vuoi sapere gli utenti loggati attraverso un determinato programma (es controllo remoto) bisogna lavorare direttamente sul programma. Mi spiego:

Quando io (ip 192.168.10.18) mi collego ad un server con un determinato programma scambio con esso e solo con esso il mio ip magari avallato da altre informazioni (nome, password,...) ed è il programma stesso che le deve gestire non il sistema operativo.

Se poi vogliamo gli user loggati al sistema questo è valido solamente sotto linux o windows server e le funzioni che cerchi dovrebbero essere nella unit users.pp ma non ho info in merito.
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 11:49:32 am
grazie mille  :)
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 01:45:50 pm
Non so, a giudicare mi sembra sia solo per linux! Io cercavo una soluzione cross-platform.
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 01:58:26 pm
No no è cross platform. Le uniche specializzate per Linux sono GetUserShadowData, sgetspent e getspnam che sinceramente non so proprio che cosa fanno
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 02:00:09 pm
Se compilo uno degli esempi mi restituisce

users.pp(5,6) Fatal: Can't find unit UnixType used by users

Mi sembra che UnixType non sia cross-platform.
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 02:12:52 pm
Hai ragione (mea culpa) sotto windows non funzionano in quanto ptypes.inc che è incluso da UixType vale solo per deos, darwin, freepsd, haiku, linux, netbsd e solaris.
Comunque puoi risolvere con un bel $IFDEF WIN32 e, nella sezione windows usi le Api del sistema.

Ps. in allegato troverai una unit per delphi che include un po' di funzioni non documentate o poco documentate del windows che ho raccolto in questi anni.
Per l'utente guarda systeminformation
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 02:26:13 pm
Molto interessante, ma la procedura che mi hai indicato sembra che funzioni per ritornare l'utente con cui sono collegato. Io invece voglio sapere quale utente è collegato alla mia macchina e con quale privilegi, ad esempio se è administrator e possibilmente sapere anche l'ora a cui si è collegato.
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 02:34:55 pm
Ho capito.
Dunque, sempre per Delphi, ci sono:

(conoscere la lista degli utenti in un dominio)
http://www.torry.net/samples/samples/lan/ragetusers.zip

(Recupera tutti i nomi di rete dell'utente dal dominio specificato)
http://www.torry.net/vcl/lan/msnetworks/netusers.zip

Spero che ti siano di aiuto ma tieni presente che è una faccenda abbastanza ostica
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 02:36:47 pm
Grazie mille ora do un occhiata
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 03:39:37 pm
Sto facendo alcune prove ma non mi trova le due unit

lmaccess, lmglobal 

nell'esempio

(conoscere la lista degli utenti in un dominio)
http://www.torry.net/samples/samples/lan/ragetusers.zip
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 03:44:33 pm
Trovate!

vai qui' http://svn2.assembla.com/svn/silvestrin/delphi7/trunk/repositorio/
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 03:50:14 pm
Grande  :)

Ora però su questo codice
Codice: [Seleziona]
function NetApiBufferAllocate;          external 'NETAPI32.DLL';
function NetApiBufferFree;              external 'NETAPI32.dLL';
function NetApiBufferReallocate;        external 'NETAPI32.DLL';
function NetApiBufferSize;              external 'NETAPI32.DLL';       
Mi dice:
lmglobal.pas(658,30) Fatal: Syntax error, ":" expected but ";" found

Ho provato a sostituire
function NetApiBufferAllocate;
con
function NetApiBufferAllocate:
ma dice

lmglobal.pas(658,50) Error: Identifier not found "external"

Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 03:54:26 pm
devono essere dichiarate cosi':

Codice: [Seleziona]
Const 
   NERR_Success = 0;

function NetApiBufferAllocate(ByteCount: DWORD; var Buffer: Pointer): DWORD;
                                           stdcall; external 'netapi32.dll';
function NetGetDCName(servername: LPCWSTR; domainname: LPCWSTR;
  bufptr: Pointer): DWORD; stdcall; external 'netapi32.dll';
function NetApiBufferFree (Buffer: Pointer): DWORD ; stdcall;
                                     external 'netapi32.dll';
Function NetWkstaGetInfo
        (ServerName : LPWSTR;
         Level      : DWORD;
         BufPtr     : Pointer) : Longint; Stdcall;
                external 'netapi32.dll' Name 'NetWkstaGetInfo';

function NetUserEnum(servername: LPCWSTR; level: DWORD; filter: DWORD;
  var bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD;
  var totalentries: DWORD; resume_handle: PDWORD): DWORD; stdcall;
                                          external 'netapi32.dll';

comunque se vai qui' c'e' un esempio bello e pronto http://www.delphi-central.com/tutorials/delphi_user_list.aspx
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 04:28:22 pm
Ok mi sono buttato sull'esempio che mi hai detto ma GetNetParam non riesco a trovarlo. In quale unit è?!
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 04:35:49 pm
Ok, risolto con questo

http://www.delphidabbler.com/tips/62
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 04:48:01 pm
Perfetto, mi segno il sito (fa sempre comodo)
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 07, 2011, 05:10:21 pm
Bene, sono riuscito ad avere la lista degli utenti che sono su una determinata macchina in un dominio. Ora però voglio sapere quali sono i privilegi di quell'utente, per esempio se è amministratore oppure altro. Sai come si fa?
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 07, 2011, 06:23:47 pm
Prova qui http://pasotech.altervista.org/delphi/articolo26.htm
Scusa ma sono con il cellulare
Titolo: Re:Richiesta utenti loggati
Inserito da: xinyiman - Dicembre 09, 2011, 09:19:59 am
Ok, perfetto. Ora mi resta solo da capire come posso sapere la data e l'ora in cui un utente si è loggato e in cui si stà scollegando.

Tu hai qualche idea?
Titolo: Re:Richiesta utenti loggati
Inserito da: Microges2000 - Dicembre 12, 2011, 08:54:18 am
Questa volta no ma credo che dovresti spulciarti i file di log del SO