¿Cómo saber el PID de un proceso?
Publicado: Dom, 08 Mar 2026, 20:55
Para aquellos no tan duchos en la programación o que apenas empiezan aquí, les publico otro código que les ayudará en la tarea de inyectar código por DLL; éste nos permite saber el PID de un proceso a partir de su nombre. Para ello habrá que agregar "psapi.h" al include y "psapi.lib" a la aplicación.
Perdonen que use un estilo distinto de llaves en esta función; algunas de las cosas que publico las escribí hace algunos años y con el tiempo he cambiado un poco la forma de escribir códigos.
Les recomiendo hacer uso de esta función cuando estén con privilegios SYSTEM. Su único parámetro es el nombre del proceso (ej: "services.exe"). A esta altura, la mayoría debe pensar que le tengo mala voluntad al dichoso proceso services.exe, pero todo lo contrario, traten de detener el proceso y verán por qué lo prefiero.
Código: Seleccionar todo
DWORD GetProcessID(String Module)
{
DWORD lista[1024];
HANDLE proceso;
char buffer[MAX_PATH + 1];
DWORD l;
int i;
String ProcessModule;
DWORD result = 0;
if (!EnumProcesses(lista, sizeof(lista), &l))
return 0;
l = l / sizeof(DWORD);
for (i = 0; i<int(l); i++)
{
proceso = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ ,FALSE,lista[i]);
if (proceso != NULL)
{
if (GetModuleFileNameEx(proceso,NULL,buffer,sizeof(buffer)-1))
{
ProcessModule = buffer;
if (ExtractFileName(AnsiString(ProcessModule).LowerCase()) == Module.LowerCase())
{
result = lista[i];
}
}
CloseHandle( proceso );
}
}
return result;
}
Les recomiendo hacer uso de esta función cuando estén con privilegios SYSTEM. Su único parámetro es el nombre del proceso (ej: "services.exe"). A esta altura, la mayoría debe pensar que le tengo mala voluntad al dichoso proceso services.exe, pero todo lo contrario, traten de detener el proceso y verán por qué lo prefiero.