Ir al contenido


Foto

Pregunta sobre el truco ShellMonitor de Escafandra


  • Por favor identifícate para responder
1 respuesta en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 03 junio 2016 - 12:04

Hola a todos

Buscando como monitorear la copia de archivos para una carpeta compartida en el servidor, encontre este truco de escafandra

http://delphiaccess....ólo-con-la-api/

 

Mi pregunta es: Se puede saber que usuario fue el que copio o borro cada archivo o carpeta?

 

El acceso esta permitido para todos los usuarios del dominio que se hayan autenticado, todos ellos pueden copiar, modificar o borrar

 

El objetivo es tener un registro de lo que copia cada usuario (lo necesita el de seguridad informatica)

 


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 04 junio 2016 - 05:13

Con la siguente función que te propongo sabrás el usuario de la sesión actual que es el que está modificando los archivos.
 


delphi
  1. type
  2. PTOKEN_USER = ^TOKEN_USER;
  3. TOKEN_USER = record
  4. User: TSidAndAttributes;
  5. end;
  6.  
  7. function GetCurrentUser: String;
  8. var
  9. hToken: THANDLE;
  10. Buffer: array [0..1023] of BYTE;
  11. cbBuf: DWORD;
  12. ptiUser: PTOKEN_USER;
  13. snu: SID_NAME_USE;
  14. User, Domain: ShortString;
  15. USize, DSize: DWORD;
  16. begin
  17. ptiUser:= PTOKEN_USER(@Buffer[0]);
  18. if OpenProcessToken(THANDLE(-1), TOKEN_QUERY, hToken) then
  19. if GetTokenInformation(hToken, TokenUser, ptiUser, sizeof(Buffer), cbBuf) then
  20. LookupAccountSid(nil, ptiUser.User.Sid, @User[1], USize, @Domain[1], DSize, snu);
  21.  
  22. User[0]:= CHAR(USize);
  23. Result:= User;
  24. end;


Saludos.


  • 1




IP.Board spam blocked by CleanTalk.