Ver Mensaje Individual
  #15  
Antiguo 29-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
La razón de que solo te muestre los del usuario es esta:

Código:
proceso = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ 
                        | PROCESS_TERMINATE,FALSE,lista[i]);
Si observas abrimos el proceso indicándole que queremos tener permiso para terminarlo, si no podemos obtener ese permiso la función OpenProcess falla. Como usuario normal no tenemos permiso para terminar algunos procesos, de ahí que no aparezcan en la lista. Si quieres hacer un simple listado cambia la función anterior por algo como esto:

Código:
proceso = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,lista[i]);
Pero entonces no podrás terminar el proceso, no al menos usando ese handle.

En cuanto a lo de hacer nuestro proceso inmortal, es algo complicado. Una solución si el usuario al que se le debe impedir el asesinato es un usuario limitado es hacer que nuestro proceso sea un servicio. Pero si es un administrador, no hay nada que se pueda hacer. Bueno lo hay, pero hay que modificar el comportamiento de todo el sistema, a un nivel que ya se nos escapa, así que vamos a dejarlo pro ahora.
Responder Con Cita