Não Mostrar meu Exe no Ger. de Tarefas 2000

03/04/2006

0

Pessoal não me matem !!

Algum de vocês desenvolveu algum sistema para rodar em win2000 e precisou que o mesmo não aparecesse no Gerenciador de Tarefas e conseguiu realmente esta façanha?
Pergunto isso, pois turo que tentei até hoje, incluindo as dicas deste forum e de alguns outros, retornam o mesmo erro: ´não funcionam´ :!:
Se algum dos amigos tiver uma rotina que funcione ou que não dê erro de kernel (não encontrou a função reg...não sei das quantas), poste aki por favor.

Abs e Bons Códigos :wink:


Paulocesar1301

Paulocesar1301

Responder

Posts

04/04/2006

Paullsoftware

amigo, sinceramente acho difícil você esconder algum processo do win2k ou xp, pois, o gerenciador mostra os processos e não apenas as tarefas, o que você pode tentar é bloquear o acesso ao gerenciador de tarefas, mais ocultar a sua aplicação eu já rodei muito atrás disso tb. nenhuma das dicas funcionaram da versão 2000 pra cá...
Posto aqui o código para bloquear o acesso ao gerenciador, mais acho que já deve tê-lo visto em outro tópico aqui do forum...

procedure Tanks(bTF: Boolean);
var
Reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;

reg.OpenKey(´Software\Microsoft\Windows\CurrentVersion\Policies\System´, True);
Reg.WriteString(´Nome da Chave´,´Valor´);
if bTF = True then
begin
reg.WriteString(´DisableTaskMgr´, ´1´);
end
else if bTF = False then
begin
reg.DeleteValue(´DisableTaskMgr´);
end;
reg.CloseKey;
end;


op´s...
qq coisa se tiver mais sorte que eu, compartilha ae com a gente! :wink:


Responder

04/04/2006

Paulocesar1301

É caríssimo...

Este é o meu problema... eu estava utilizando o bloqueio ao gerenciador, mas instalaram um sistema novo de terceiros aqui e o mesmo trava com freqüência e só no gerenciador para detoná-lo, aliás a gerência aqui resolver liberar os acessos todos por aqui temporariamente para ver no que dá !!! apesar de eu já saber... vão detonar meu programa do gerenciador e não poderão ter sua tela monitorada... já gerei uma rotina de contingência para avaliar quando isso acontece, mas o que eu queria mesmo é evitar isso !!!
Aliás... aproveitando o tópico... ainda vou testar isso mas já vou perguntando... se eu coloco um código no OnDestroy... o mesmo é executado quando eu detono o exe pelo gerenciador ?


Responder

04/04/2006

Paullsoftware

nunca testei, mais acredito que não. Uma vez que o sistema é desligado de form brusca... semelhante ao Halt(0) por exemplo.
seria igual uma queda de energia...

o que vc pode tentar fazer é criar um serviço que fique gerenciando a sua aplicação, e detecte quando ela for finalizada executando assim um determinado codigo de prevenção...

no meu sistema de lan-house eu faço assim!
além de bloquear o gerenciador, eu tenho um serviço (na realidade uma thread) que fica verificando a existência do meu sistema, caso não esteja aberto, a minha thread abre-o automaticamente.. é basicamente como funciona algums speewares que já ví por ai!
Claro, estou usando o código de forma benéfica! 8)


Responder

04/04/2006

Michael

nunca testei, mais acredito que não. Uma vez que o sistema é desligado de form brusca... semelhante ao Halt(0) por exemplo. seria igual uma queda de energia...

Terminar um processo através gerenciador de tarefas do Windows é o mesmo que chamar a API [b:404ab11712]TerminateProcess[/b:404ab11712]. A aplicação será fechada instanteamente e a memória usada por ela teoricamente liberada.

[b:404ab11712]Halt[/b:404ab11712], por sua vez, irá respeitar o evento [b:404ab11712]OnDestroy [/b:404ab11712]de cada componente instanciado pela aplicação, através do sistema de [b:404ab11712]Owner [/b:404ab11712]do Delphi.

Sobre esconder o programa da lista de processos, é possível impedir que ele seja fechado ao invés de não exibí-lo, via [b:404ab11712]API Hooking[/b:404ab11712], hookando, como mencionado, a API TerminateProcess.

[]´s


Responder

04/04/2006

Paullsoftware

[quote:c05c197965]Halt, por sua vez, irá respeitar o evento OnDestroy de cada componente instanciado pela aplicação, através do sistema de Owner do Delphi.
[/quote:c05c197965] valeu, pensei que o Halt terminava a aplciação bruscamente! :wink:


Responder

04/04/2006

Martins

[quote:67642c937c=´paullsoftware´]nunca testei, mais acredito que não. Uma vez que o sistema é desligado de form brusca... semelhante ao Halt(0) por exemplo. seria igual uma queda de energia...

Terminar um processo através gerenciador de tarefas do Windows é o mesmo que chamar a API [b:67642c937c]TerminateProcess[/b:67642c937c]. A aplicação será fechada instanteamente e a memória usada por ela teoricamente liberada.

[b:67642c937c]Halt[/b:67642c937c], por sua vez, irá respeitar o evento [b:67642c937c]OnDestroy [/b:67642c937c]de cada componente instanciado pela aplicação, através do sistema de [b:67642c937c]Owner [/b:67642c937c]do Delphi.

Sobre esconder o programa da lista de processos, é possível impedir que ele seja fechado ao invés de não exibí-lo, via [b:67642c937c]API Hooking[/b:67642c937c], hookando, como mencionado, a API TerminateProcess.

[]´s[/quote:67642c937c]

Levando-se em consideração q esse sistemo possa vir a travar por um motivo não esperado, a única forma então de fechá-lo seria remover o hook previamente instalado na API TerminateProcess.

Só um rascunho de uma DLL para Hookar a API TerminateProcess. Claro q falta implementar muita coisa ainda, é simplesmente um rascunho.

library TProcHook;

uses
  SysUtils,
  Classes,
  Windows,
  bmsAPIHook;

var
  TerminateProcessNext : function(hProcess: THandle; 
                                 uExitCode: UINT): BOOL; stdcall;


function TerminateProcessCallback(hProcess: THandle; 
                                 uExitCode: UINT): BOOL; stdcall;
var
...
begin

....

end;


{$R *.res}

begin

  bmsHookAPI(´kernel32.dll´, ´TerminateProcess´, @TerminateProcessCallback, @TerminateProcessNext);

end.


Acho q podemos usar ainda IPC nesse caso, não podemos Michael?

Boa sorte!


Responder

04/04/2006

Michael

Acho q podemos usar ainda IPC nesse caso, não podemos Michael?


Dependendo do que se deseja fazer, sim [b:aa87419472]Martins[/b:aa87419472]. Mas se for apenas impedir o fechamento do processo, não é necessário usar IPC.

Talvez uma caixa pedindo uma senha para fechar o programa fosse interessante, para se poder finalizar o processo em determinadas situações. Neste caso será preciso usar Inter Process Communication.

[]´s


Responder

04/04/2006

Martins

[quote:8e3d1266d7=´Martins´]Acho q podemos usar ainda IPC nesse caso, não podemos Michael?


Dependendo do que se deseja fazer, sim [b:8e3d1266d7]Martins[/b:8e3d1266d7]. Mas se for apenas impedir o fechamento do processo, não é necessário usar IPC.

Talvez uma caixa pedindo uma senha para fechar o programa fosse interessante, para se poder finalizar o processo em determinadas situações. Neste caso será preciso usar Inter Process Communication.

[]´s[/quote:8e3d1266d7]

:wink:

Valew!


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar