Quando um aplicativo falha no Windows e um depurador como o Visual Studio é instalado, a seguinte caixa de diálogo modal é exibida:
[Título: Microsoft Windows]
X parou de funcionar
Um problema impediu o programa de funcionar corretamente. O Windows fechará o programa e notificará você se houver uma solução disponível.
[Depurar] [Fechar aplicativo]
Existe uma maneira de desativar esta caixa de diálogo? Ou seja, o programa travou e foi gravado silenciosamente?
Meu cenário é que eu gostaria de executar vários testes automatizados, alguns dos quais travarão devido a bugs no aplicativo em teste. Não quero esses diálogos impedindo a execução da automação.
Pesquisando, acho que encontrei a solução para desabilitar isso no Windows XP, que é destruir esta chave de registro:
HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ Debugger
No entanto, isso não funcionou no Windows Vista.
fonte
Respostas:
Para forçar o Relatório de Erros do Windows (WER) a fazer um despejo de memória e fechar o aplicativo, em vez de solicitar que você depure o programa, você pode definir estas entradas de registro:
Depois que isso for definido, quando seus aplicativos travarem, você deverá ver os arquivos * .hdmp e * .mdmp em:
fonte
Veja aqui:
http://msdn.microsoft.com/en-us/library/bb513638.aspx
regedit
DWORD HKLM ou HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ DontShowUI = "1"
fará o WER relatar silenciosamente. Então você pode definir
DWORD HKLM ou HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ Disabled = "1"
para impedi-lo de falar com o MS.
fonte
Não tenho certeza se isso se refere exatamente ao mesmo diálogo, mas aqui está uma abordagem alternativa de Raymond Chen :
fonte
Tive que desabilitar isso para o trabalho de automação de lançamento no Windows 64 bits para Firefox e fiz o seguinte:
É semelhante ao que foi realizado para relatórios de experiência do cliente em: http://www.blogsdna.com/2137/fix-windows-installer-explorer-update-has-stopped-working-in-windows-7.htm
fonte
No meu contexto, desejo apenas suprimir o pop-up para meus testes de unidade e não para todo o sistema. Descobri que uma combinação de funções é necessária para suprimir esses erros, como capturar exceções não tratadas, suprimir verificações de tempo de execução (como a validade do ponteiro de pilha) e os sinalizadores de modo de erro. Isso é o que usei com algum sucesso:
fonte
No aplicativo WPF
fonte
Você deve implementar um filtro de exceção não tratada que simplesmente fecha seu aplicativo e, em seguida, defina essa função de filtro com SetUnhandledExceptionFilter () .
Se estiver usando o CRT seguro, você também deve fornecer seu próprio manipulador de parâmetro inválido e definir isso com _set_invalid_parameter_handler ().
Esta postagem do blog também contém algumas informações: http://blog.kalmbachnet.de/?postid=75
fonte
Durante o teste, você pode executar com um 'depurador' como o ADPlus anexado, que pode ser configurado de muitas maneiras úteis para coletar dados (minidespejos) em erros e ainda evitar os problemas de diálogo modal que você indicou acima.
Se você deseja obter algumas informações úteis quando seu aplicativo travar na produção, você pode configurar o relatório de erros da Microsoft para obter algo semelhante aos dados ADPlus.
fonte
Esta não é uma resposta direta à pergunta, pois é uma solução alternativa e a questão é sobre como desativar esse recurso, mas, no meu caso, sou um usuário em um servidor com permissões limitadas e não posso desativar o recurso usando um dos as outras respostas. Então, eu precisava de uma solução alternativa. Isso provavelmente funcionará para pelo menos alguns outros que terminam nesta questão.
Usei o autohotkey portátil e criei uma macro que verifica uma vez por minuto se a caixa pop-up existe e, se existir, clica no botão para fechar o programa. No meu caso, isso é suficiente e deixa o recurso ativado para outros usuários. Requer que eu inicie o script quando executo o programa em risco, mas funciona para minhas necessidades.
O script é o seguinte:
editar: uma bandeira rápida. Quando outras coisas estão ativas, isso parece tentar ativar os controles na janela de primeiro plano - é para enviá-los ao programa em segundo plano. Se eu encontrar uma correção, edito esta resposta para refleti-la, mas por enquanto, tome cuidado ao usar isso e tentar fazer outro trabalho em uma máquina ao mesmo tempo.
fonte
Depois de tentar de tudo na internet para me livrar do depurador just in time, encontrei uma maneira simples que realmente funcionou e espero que ajude alguém.
Vá para o Painel de Controle Vá para Ferramentas Administrativas Vá para Serviços Procure na lista o Machine Debug Manager Clique com o botão direito nele e clique em Propriedades. Na guia Geral, procure por Tipo de Inicialização Clique em Desativar. Clique em Aplicar e OK.
Não vi a mensagem do depurador desde então e meu computador está funcionando perfeitamente.
fonte
Em vez de alterar os valores no registro, você pode desabilitar completamente o relatório de erros no Windows Server 2008 R2, Windows Server 2012 e Windows 8 com:
serverWerOptin /disable
https://technet.microsoft.com/en-us/library/hh875648(v=ws.11).aspx
fonte