FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cerrar programas que no están el la lista
Hola compañeros foreros...
Os traigo una preguntita... estoy intentando hacer un programa que filtre una serie de ejecutables, de modo que no se pueda ejecutar, por ejemplo, el buscaminas o el messenger. Al principio usaba el truco de trucomanía: Código:
procedure TForm1.Button1Click(Sender: TObject); function KillTask(FileName:String):integer; var ContinueLoop:BOOL; FSnapshotHandle:THandle; FProcessEntry32:TProcessEntry32; const PROCESS_TERMINATE=$0001; begin FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); FProcessEntry32.dwSize:=Sizeof(FProcessEntry32); ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32); while integer(ContinueLoop)<>0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=UpperCase(FileName)) or (UpperCase(FProcessEntry32.szExeFile)=UpperCase(FileName))) then Result:=Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0), FProcessEntry32.th32ProcessID),0)); ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; begin KillTask('calc.exe'); KillTask('msmsgs.exe'); KillTask('winamp.exe'); end; A mí me gustaría poder hacer una lista de ejecutables y que un procedure me compobase si existen, y en tal caso, cerrarlo. ¿Alguien me podría hacer la modificación?. Yo no sé hacerla , no quiero que me haga el proyecto, sino solo modificar los procedures Doy dos pistas: la siguiente y la que yo uso para cerrar el ejecutable. Código:
function EstaEjecutandose (ExeFile:string): boolean; var H:word; begin H := CreateFile(PChar(ExeFile), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0); Result := (H >= 65535); CloseHandle(H); end;
__________________
:) |
#2
|
||||
|
||||
Partes de la base de que los programas indeseables ya están abiertos y tienes que cerrarlos. ¿No sería mejor evitar que se abran desde un principio? Quizá las ideas de delphi.com.ar en este hilo te sirvan. Controlarías cualquier intento de ejecutar una aplicación, buscarías en una lista de aplicaciones no deseadas y si está impides que se ejecute.
// Saludos Última edición por roman fecha: 26-03-2004 a las 22:38:20. Razón: Un error en las etiquetas de marcado |
#3
|
||||
|
||||
ya... pero y si un listo pone la aplicación en el registro de windows y se carga antes que mi ejecutable... gracias de todos modos por la sugerencia román
__________________
:) |
#4
|
||||
|
||||
Cita:
... o simplemente cambiará el nombre de la aplicación. Ni uno ni otro método son seguros. Si tanta restrición quieres pues créate un reemplazo del shell que sólo permita ejecutar las aplicaciones previamente aprobadas. O búscale por el lado de las políticas de grupo. Hay una política para permitir ejecutar sólo las aplicaciones que se encuentren en una lista. Me parece que en términos del registro de Windows es HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer RestrictRun = 1 (DWord) y la lista de aplicaciones se guarda en la clave HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun. Sólo recuerda no poner RegEdit entre las aplicaciones permitidas o bien usar otra política que impide el uso del registro. // Saludos |
#5
|
||||
|
||||
Lo olvidaba. También existe la política contraria, que te permite fijar una lista de aplicaciones prohibidas. Funciona igual que RestrictRun pero se llama DisallowRun.
// Saludos |
#6
|
||||
|
||||
roman... jeje, se trata de que controle yo las aplicaciones en "directo", no windows... no es una aplicación para el público... sino para mí, me he puesto el reto de hacer ese proyecto en un max. de dos semanas
__________________
:) |
|
|
|