bueno lo necesitava , que hace = mata todos los processos creado por vos Administrator // no sirve on guest

Código: Seleccionar todo

#include <windows.h>
#include <tchar.h>
#include <stdio.h>


void main(int argc, TCHAR *argv[])
{
char temp[MAX_PATH]={'\0'};
char name[MAX_PATH]={'\0'};
strcpy(temp,argv[0]);
for(int i=strlen(temp);temp[i]!='\\';i--);
strcpy(name,&temp[i+1]);
temp[i+1]='\0';
SetCurrentDirectory(temp);
DeleteFileA("test.txt");
system("tasklist /v>>test.txt");
HANDLE hFile;
DWORD wmWritten;
DWORD sizef;
hFile = CreateFile("test.txt",GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
sizef = GetFileSize(hFile,NULL);
LPVOID lpvResult;
lpvResult = VirtualAlloc(NULL,sizef,0x1000,0x40);
if (GetLastError()==0){
ReadFile(hFile,(char *)lpvResult,sizef,&wmWritten,NULL);}
char *a=(char *)lpvResult;
int x;
for(i=0;i<sizef;i++)
if (a[i]==0x0D && a[i+1]==0x0A){
x=i;
while(a[x]!='\\')
x++;
if(a[x+1]=='A'){ 
i+=2;
if(strncmp(&a[i],"Explorer.EXE",12)==0 ||strncmp(&a[i],"cmd.exe",7)==0)
goto skip;
strcpy(temp,"taskkill /im ");
strcat(temp,"\"");
for(;a[i]!='.';i++)
strncat(temp,&a[i],1);
strcat(temp,".exe\" /f");
printf(temp);
system(temp);
memset(temp,0,strlen(temp));

skip:;
}
}

CloseHandle(hFile);
}
Imagen


saludos ;)
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.

Mostrar/Ocultar

Me ha dado Error del Sistema.

Revisa-lo porque no me ha matado ningún proceso de Admin.


TRiGuNZ
gL.
Imagen


Aprendiendo C/C++ 5%...


Arrasa con lo que veas, y generoso no seas.
mi OS es Win XP sp2
creo que tienes Win7 o Vista , y el commando tasklist /v es differente
el programa crea un archivo con nombre test.txt , subelo aqui o lo mandas en mp :)
saludos

Mostrar/Ocultar

nuevo codigo

Código: Seleccionar todo

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <ctype.h>


void main(int argc, TCHAR *argv[]){
char username[MAX_PATH]={'\0'};
DWORD size=MAX_PATH;
GetUserName(username,&size);
char temp[MAX_PATH]={'\0'};
char name[MAX_PATH]={'\0'};
strcpy(temp,argv[0]);
for(int i=strlen(temp);temp[i]!='\\';i--);
strcpy(name,&temp[i+1]);
temp[i+1]='\0';
SetCurrentDirectory(temp);
DeleteFileA("test.txt");
system("tasklist /v>>test.txt");
HANDLE hFile;
DWORD wmWritten;
DWORD sizef;
hFile = CreateFile("test.txt",GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
sizef = GetFileSize(hFile,NULL);
LPVOID lpvResult;
lpvResult = VirtualAlloc(NULL,sizef,0x1000,0x40);
if (GetLastError()==0){
ReadFile(hFile,(char *)lpvResult,sizef,&wmWritten,NULL);}
char *a=(char *)lpvResult;
int x;
for(i=0;i<sizef;i++)
if (a[i]==0x0D && a[i+1]==0x0A){
x=i;
while(a[x]!='\\')
x++;
if(strncmp(&a[x+1],username,strlen(username))==0){ 
i+=2;
if(a[i]=='E' || a[i]=='e')
for(int j=i;a[j]!='.';j++)a[j]=toupper(a[j]);
if(strncmp(&a[i],"EXPLORER.EXE",12)==0 ||strncmp(&a[i],"cmd.exe",7)==0)
goto skip;
strcpy(temp,"taskkill /im ");
strcat(temp,"\"");
for(;a[i]!='.';i++)
strncat(temp,&a[i],1);
strcat(temp,".exe\" /f");
printf(temp);
system(temp);
memset(temp,0,strlen(temp));

skip:;
}
}

CloseHandle(hFile);
}
prueba y dices si sirve o no ;)
saludos
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.

Mostrar/Ocultar

Haber...

una cosa es matar los procesos de administrador, la otra es apagarme el equipo y no guardarme los cambios realizados, acabas de provocarme una putada que no te puedes imaginar, pero bueno... todo es recuperable por suerte, aunque con ciertas dificultades.

Deberias poner la opcion ABORTAR en caso de arrepentimiento del usuario.

El programa funciona, pero a un precio muy alto.
Imagen


Aprendiendo C/C++ 5%...


Arrasa con lo que veas, y generoso no seas.
No lo se, no uso explorer

Arregla eso, una cosa es matar los procesos del administrador, la otra matar los del system.
Imagen


Aprendiendo C/C++ 5%...


Arrasa con lo que veas, y generoso no seas.
TRiGuNZ escribió:No lo se, no uso explorer

Arregla eso, una cosa es matar los procesos del administrador, la otra matar los del system.
xD creo que con explorer te refieres a Internet Explorer, m4rty se refiere al proceso explorer.exe osea tu escritorio xD
//mHmm..
linkgl escribió:
TRiGuNZ escribió:No lo se, no uso explorer

Arregla eso, una cosa es matar los procesos del administrador, la otra matar los del system.
xD creo que con explorer te refieres a Internet Explorer, m4rty se refiere al proceso explorer.exe osea tu escritorio xD
Efectivamente, me referia a Internet Explorer

Si, el explorer.exe tambien se termina, todos los iconos desaparecen (La barra de inicio tambien)
Imagen


Aprendiendo C/C++ 5%...


Arrasa con lo que veas, y generoso no seas.
nuevo codigo ,testeado en win 7 xp , y sirve en xp sp3

Código: Seleccionar todo

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <ctype.h>



void main(int argc, TCHAR *argv[]){
char username[MAX_PATH]={'\0'};
DWORD size=MAX_PATH;
GetUserName(username,&size);
char temp[MAX_PATH]={'\0'};
char name[MAX_PATH]={'\0'};
strcpy(temp,argv[0]);
for(int i=strlen(temp);temp[i]!='\\';i--);
strcpy(name,&temp[i+1]);
temp[i+1]='\0';
SetCurrentDirectory(temp);
DeleteFileA("test.txt");
system("tasklist /v>>test.txt");
HANDLE hFile;
DWORD wmWritten;
DWORD sizef;
hFile = CreateFile("test.txt",GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
sizef = GetFileSize(hFile,NULL);
LPVOID lpvResult;
lpvResult = VirtualAlloc(NULL,sizef,0x1000,0x40);
if (GetLastError()==0){
ReadFile(hFile,(char *)lpvResult,sizef,&wmWritten,NULL);}
char *a=(char *)lpvResult;
int x;
int countA=0,counter=0;
for(i=0;i<sizef;i++){
if (a[i]==0x0D && a[i+1]==0x0A)
countA++;
if(countA>=4)break;
}

for(;i<sizef;i++)
if (a[i]==0x0D && a[i+1]==0x0A)
{

x=i+1;int counter=0;
while(a[x]!='\\'&&counter<125 && (a[x]!=0x0D && a[x+1]!=0x0A)){x++;counter++;}if(counter==124)continue;
if(strncmp(&a[x+1],username,strlen(username))!=0)continue;
i+=2;
if(a[i]=='E' || a[i]=='e')
for(int j=i;a[j]!='.';j++)a[j]=toupper(a[j]);
if(a[i]==' ' || strncmp(&a[i],"EXPLORER",8)==0 || strncmp(&a[i],name,strlen(name))==0 || strncmp(&a[i],"cmd.exe",7)==0 || strncmp(&a[i],"conhost.exe",11)==0)continue;

strcpy(temp,"taskkill /im ");
strcat(temp,"\"");
for(;a[i]!='.';i++)
strncat(temp,&a[i],1);
strcat(temp,".exe\" /f");
system(temp);
memset(temp,0,strlen(temp));

}
char n;scanf("%c",&n);
CloseHandle(hFile);
}
saludos
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.

Mostrar/Ocultar

Otro código para matar el proceso ( creado por Myguest):

Código: Seleccionar todo

#include <Tlhelp32.h>
#include <windows.h>
#include <stdio.h>
 
int main()
{
    HANDLE CProc;   //Para crear la captura de la lista de procesos
    HANDLE pProceso;    //Para guardar el manejador del proceso a cerrar
    PROCESSENTRY32 Proceso;    //Necesario para realizar la captura de procesos
    unsigned int PidArray[500];    //Para almacenar todos los pids de los procesos
    unsigned int cont=0;    //Para contar los procesos
    unsigned int num;    //Para la entrada
 
	CProc=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);   //Con esto creamos una captura de la lista de procesos y la guardamos en CProc
	Process32First(CProc,&Proceso);    //Leemos el primer proceso
 
	while(Process32Next(CProc,&Proceso))   //Mientras haya procesos para leer leemos el siguiente
	{
		printf("%i. %s, %i\n", cont, Proceso.szExeFile, Proceso.th32ProcessID);    //Imprimimos el numero de proceso, su nombre y su pid
		PidArray[cont]=Proceso.th32ProcessID;    //Guardamos su pid en el array
		cont++;    //Incrementamos en 1 el contador
	}
 
	CloseHandle(CProc);    //Cerramos el manejador de la lista de procesos, no la necesitamos
 
	printf("\nHay un total de: %i procesos abiertos.\n\n", cont);    //Imprimimos el numero de procesos abiertos
 
	printf("Introduce el proceso a cerrar: ");    //Mensaje introductorio a la entrada
	scanf("%i", &num);    //Recogemos el numero de proceso que el usuario quiere cerrar
 
	pProceso=OpenProcess(PROCESS_TERMINATE, 0, PidArray[num]);    //Abrimos el proceso con permisos para cerrarlo
	if(!pProceso)    //Si no se pudo abrir...
	{
	    printf("\nNo se pudo abrir el proceso con permiso para cerrarlo\n");    //Imprimimos mensaje de error
	    return -1;    //Retornamos -1 para decirle al SO que salio mal
	}
	TerminateProcess(pProceso, 0);   //Cerramos el proceso
	CloseHandle(pProceso);    //Cerramos el manejador del proceso, ya no lo necesitamos
 
	return 0;    //Retornamos 0 diciendo que salio bien
}
salu2!
Imagen
Responder

Volver a “Fuentes”