Processos X Administrador
Existe algum meio de ´matar´ um processo sem que usuário tenha acessos de administrador via Delphi ?
Hoje uso:
Abs e Bons Códigos :wink:
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
Curtidas 0
Respostas
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
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 !!!
Vou tentas via SendMessage e ver se roda !!!
Vlw camarada !!!
GOSTEI 0
Paulocesar1301
26/06/2006
Bom Povo,
Aos que se interessaram... com Send não rodou, mas com Post sim e rodou mesmo ...
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 !!
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
26/06/2006
Bom Povo,
Aos que se interessaram... com Send não rodou, mas com Post sim e rodou mesmo ...
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 !!
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
26/06/2006
Bom Povo,
Aos que se interessaram... com Send não rodou, mas com Post sim e rodou mesmo ...
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 !!
PostMessage(FindWindow(nil, ´MSN Messenger´), WM_CLOSE, 0, 0); PostMessage(FindWindow(nil, ´MSN Messenger´), WM_QUIT, 0, 0);
:wink:
GOSTEI 0