É possível impedir que o Windows 7 force o fechamento de um programa que não responde?

5

O Windows 7 parece ter um excesso de zelo em fechar programas nos quais acha que o programa parou de responder. Algumas coisas levam muito tempo, e tenho a sensação de que deveria dar um pouco mais de tempo às coisas antes de decidir que elas não estão mais funcionando.

Alguém pode me esclarecer sobre os critérios que ele usa para decidir se um programa congelou?

    
por barrymac 18.07.2011 / 01:02

3 respostas

5

Existem vários critérios. Em geral, as exceções não tratadas são o principal matador. Existem outros erros, mas eles são bastante técnicos.

Dois, um aplicativo deixa de responder se as mensagens enviadas para ele não forem recuperadas. O Windows anexa um cronômetro a mensagens para cada aplicativo. Se não for tratado, é quando você recebe a mensagem sem resposta.

Três, os aplicativos também podem informar explicitamente ao Windows para que o processo de inscrição mate determinados erros não fatais. Muitas vezes, isso é para evitar corrupção de dados.

Qual é o programa que trava?

edit:

Aparentemente, é uma maneira de desativar isso. Por coincidência, eu estava lendo o blog da equipe do perfmon e encontrei este artigo . Ele fornece etapas para desativar explicitamente "fantasmas" para um aplicativo. Eu vou cortar e colar os passos também.

To download the Application Compatibility Toolkit, visit the following Microsoft Web site:

http://msdn2.microsoft.com/en-us/library/aa286552.aspx

To create a custom Application Compatibility database:

  1. Install and run the Compatibility Administrator Tool.

  2. Right-click Custom Database, and then click New.

  3. Right-click the new database, and then click Rename.

  4. Type noghost as the name of the database. (You can name this whatever you want.)

  5. Right-click New Database, click Create New, and then click Application Fix. Type the name of the program to be fixed.

  6. Type the name of the program manufacturer.

  7. Locate and then select the appropriate program (.exe) file.

  8. Click Next.

  9. In the Compatibility Modes window, click None, and then click Next.

  10. In the Compatibility Fixes list, click NoGhost.

  11. Click either Test Run or Finish. Clicking Test Run starts the program with the application compatibility setting. Clicking Finish adds the compatibility fix to your database.

  12. On the File menu, click Save to save the database. Or, copy the database to the C:\Windows\AppPatch folder.

  13. Right-click the database, and then click Install. Or, run the sdbinst c:\windows\apppatch\noghost.sdb -q command to install the database.

Eu mesmo verifiquei os passos. . .

    
por 18.07.2011 / 02:25
2

Você pode alterar o período de tempo limite necessário para o Windows considerar um aplicativo (ou serviço) como não respondendo, alterando o WaitToKillAppTimeout entrada ( WaitToKillServiceTimeout para serviços). Esta é uma configuração por usuário.

O padrão é 20.000 milissegundos (20 segundos), então você pode tentar configurá-lo para 30.000 ou algo assim. Além disso, você deve ser capaz de clicar em Cancel na caixa de diálogo End Task para obter mais tempo sob demanda.

Outras configurações relacionadas que você pode alterar incluem HungAppTimeout e AutoEndTasks .

    
por 18.07.2011 / 02:49
2

O Windows 7 não faz nenhuma tentativa de fechar um programa que não responde antes de atingir o tempo limite, a menos que você clique nele ou tente executar outra tarefa antes que ela termine com aquela que está sendo concluída. Você pode ter mais sorte se simplesmente esperar até que o programa termine antes de clicar nele para começar outra coisa.

A alteração do tempo limite não altera esse comportamento - ele controla apenas quanto tempo o próprio Windows aguarda, não o usuário.

    
por 18.07.2011 / 03:11