Processos X Administrador

Delphi

26/06/2006

Existe algum meio de ´matar´ um processo sem que usuário tenha acessos de administrador via Delphi ?

Hoje uso:
function PararPrograma(Executavel: WideString): Integer; Export; StdCall;
const PROCESS_TERMINATE=$0001;
var ContinueLoop: BOOL;
    FSnapshotHandle: THandle;
    FProcessEntry32: TProcessEntry32;
begin
 result := 0;

 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(Executavel))
      or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(Executavel))) then
     Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));

   ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
 end;

 CloseHandle(FSnapshotHandle);
end;


Abs e Bons Códigos :wink:


Paulocesar1301

Paulocesar1301

Curtidas 0

Respostas

Nildo

Nildo

26/06/2006

Não existe um meio eficiente se seu usuiário não tiver direitos suficientes. Talves um SendMessage com o WM_CLOSE pro Handle da aplicação seria acessível por um usuário comum? Creio eu que sim. Mas dessa maneira apenas fala pra aplicação Fechar. Se ela não quiser fechar, ai num tem jeito hehe


GOSTEI 0
Paulocesar1301

Paulocesar1301

26/06/2006

Qual é meu grande problema aqui... estão querendo restringir ainda mais os acessos dos usuários e fazem isso via scripts windows, porém sempre tem uns carinhas que sacam um pouco que conseguem, por exemplo, instalar e rodar um MSN Messenger... o que fiz foi um sistema (TService) que, além de outros recursos de controle em segundo plano, ´detona´ se achar rodando na máquina o MSN, Yahoo, Google Talk, e por aí vai... só que fui testar hoje em um equipamento com certas travas e com usuário apenas com direitos de convidado e simplesmente não funcionou !!!!! Pensei que ouvesse algum código... sei lá ´em baixo nível´ que conseguisse isso por baixo dos panos do rWindows.
Vou tentas via SendMessage e ver se roda !!!

Vlw camarada !!!


GOSTEI 0
Paulocesar1301

Paulocesar1301

26/06/2006

Bom Povo,
Aos que se interessaram... com Send não rodou, mas com Post sim e rodou mesmo ...

  PostMessage(FindWindow(nil, ´MSN Messenger´), WM_CLOSE, 0, 0);
  PostMessage(FindWindow(nil, ´MSN Messenger´), WM_QUIT, 0, 0);


O único problema é que preciso saber a classe ou o nome da janela, mas como são programas padrão... é fácil de resolver...
Tive que usar o [b:dd3dda74d7]WM_CLOSE[/b:dd3dda74d7] e o [b:dd3dda74d7]WM_QUIT[/b:dd3dda74d7] pq o MSN quando fechasó vai para o tray... adoto como padrão para não ter maiores complicações com outras aplicações do tipo...

Nildo,
Mais uma vez obrigado !! Nem tinha pensado no Send e PostMessage !!


GOSTEI 0
Paulocesar1301

Paulocesar1301

26/06/2006

Bom Povo,
Aos que se interessaram... com Send não rodou, mas com Post sim e rodou mesmo ...

  PostMessage(FindWindow(nil, ´MSN Messenger´), WM_CLOSE, 0, 0);
  PostMessage(FindWindow(nil, ´MSN Messenger´), WM_QUIT, 0, 0);


O único problema é que preciso saber a classe ou o nome da janela, mas como são programas padrão... é fácil de resolver...
Tive que usar o [b:20beac5f2d]WM_CLOSE[/b:20beac5f2d] e o [b:20beac5f2d]WM_QUIT[/b:20beac5f2d] pq o MSN quando fechasó vai para o tray... adoto como padrão para não ter maiores complicações com outras aplicações do tipo...

Nildo,
Mais uma vez obrigado !! Nem tinha pensado no Send e PostMessage !!


GOSTEI 0
Nildo

Nildo

26/06/2006

Bom Povo, Aos que se interessaram... com Send não rodou, mas com Post sim e rodou mesmo ...
  PostMessage(FindWindow(nil, ´MSN Messenger´), WM_CLOSE, 0, 0);
  PostMessage(FindWindow(nil, ´MSN Messenger´), WM_QUIT, 0, 0);
O único problema é que preciso saber a classe ou o nome da janela, mas como são programas padrão... é fácil de resolver... Tive que usar o [b:e1b732e64d]WM_CLOSE[/b:e1b732e64d] e o [b:e1b732e64d]WM_QUIT[/b:e1b732e64d] pq o MSN quando fechasó vai para o tray... adoto como padrão para não ter maiores complicações com outras aplicações do tipo... Nildo, Mais uma vez obrigado !! Nem tinha pensado no Send e PostMessage !!


:wink:


GOSTEI 0
POSTAR