Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 12-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
function EnablePrivilege(name: String; Enable: boolean): boolean;
var
   hToken: Cardinal;
   priv: TOKEN_PRIVILEGES;
begin
   priv.PrivilegeCount:= 1;
   priv.Privileges[0].Attributes:= 0;
   if Enable then priv.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
   LookupPrivilegeValue(nil, PCHAR(name), priv.Privileges[0].Luid);
   OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
   AdjustTokenPrivileges (hToken, FALSE, priv, sizeof(priv), nil, PDWORD(nil)^);
   Result:= (GetLastError = ERROR_SUCCESS);
   CloseHandle (hToken);
end;

function GetProcessOwner(ProcessId: DWORD; var User, Domain: String): boolean;
var
  hToken, hProcess, cbBuf, UserSize, DomainSize: Cardinal;
  pSidUser: ^SID_AND_ATTRIBUTES;
  SidNU: SID_NAME_USE;
begin
  Result:= false;
  EnablePrivilege('SeDebugPrivilege', true);
  hProcess:= OpenProcess(PROCESS_QUERY_INFORMATION, false, ProcessId);
  if hProcess <> 0 then
  begin
    if OpenProcessToken(hProcess, TOKEN_QUERY, hToken) then
    begin
      GetTokenInformation(hToken, TokenUser, nil, 0, cbBuf);
      GetMem(pSidUser, cbBuf);
      GetTokenInformation(hToken, TokenUser, pSidUser, cbBuf, cbBuf);
      CloseHandle(hToken);
      UserSize:= 0;
      DomainSize:= 0;
      LookupAccountSid(nil, pSidUser.Sid, nil, UserSize, nil, DomainSize, SidNU);
      if (UserSize <> 0) or (DomainSize <> 0) then
      begin
        SetLength(User, UserSize);
        SetLength(Domain, DomainSize);
        Result:= LookupAccountSid(nil, pSidUser.Sid, PCHAR(User), UserSize, PCHAR(Domain), DomainSize, SidNU);
      end;
    end;
     CloseHandle(hProcess);
  end;
  EnablePrivilege('SeDebugPrivilege', false);
end;

Ejemplo:

Código Delphi [-]
var
  User, Domain: String;
begin
   GetProcessOwner(StrToInt(Edit1.Text), User, Domain);
   Label1.Caption := User;
   Label2.Caption := Domain;
end;


Saludos.

Última edición por escafandra fecha: 12-09-2011 a las 11:58:37.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿No sabes Python? no hay problema... Chris Python 21 03-04-2011 06:41:51
Como sabes la IP del cliente con idTCPServer fide_uci Internet 1 13-11-2009 06:40:12
Si no sabes leer, éste es tu post... Gabo Humor 4 06-06-2008 00:15:27
20 cosas que no sabes sobre Google marcoszorrilla La Taberna 6 05-06-2008 20:30:35
¿Qué Tanto Sabes De La Vasectomía? gmontes Humor 4 10-12-2005 09:15:05


La franja horaria es GMT +2. Ahora son las 07:36:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi