Ver Mensaje Individual
  #11  
Antiguo 15-12-2013
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El código debería funcionar independientemente de si se ejecuta en una consola o en GUI.

Esta es la forma de asignar privilegios al proceso actual:
Código:
BOOL EnablePrivilege (PCSTR name, BOOL Enable = TRUE)
{
   BOOL Result;
   HANDLE hToken;
   TOKEN_PRIVILEGES priv = {1, {0, 0, SE_PRIVILEGE_ENABLED}};
   if(!Enable) priv.Privileges[0].Attributes = 0;
   LookupPrivilegeValue(0, name, &priv.Privileges[0].Luid);
   OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
   AdjustTokenPrivileges (hToken, FALSE, &priv, sizeof priv, 0, 0);
   Result = (GetLastError() == ERROR_SUCCESS);
   CloseHandle (hToken);

   return Result;
}

El uso para matar procesos sería el siguiente:

Código:
  EnablePrivilege("SeDebugPrivilege", TRUE);   // Nos asignamos privilegios debug
  TerminateProcessW(L"cmd.exe");  //Matamos la consola, por ejemplo
  EnablePrivilege("SeDebugPrivilege", FALSE);  // Nos quitamos el privilegio, si queremos...

Si ejecutas como administrador debería ser capaz de matar "casi" cualquier proceso.



Saludos.
Responder Con Cita