Como corrigir erros de tempo de execução do Windows Visual C ++

Como corrigir erros de tempo de execução do Windows Visual C ++

Bibliotecas compartilhadas no Windows tornam a programação muito mais eficiente para o programador que não precisa reinventar a roda toda vez que precisa realizar uma tarefa comum. Eles também facilitam a conexão de brechas de segurança no código compartilhado quando são encontrados, uma vez que ele precisa ser corrigido em menos lugares e não requer que todos os aplicativos sejam recompilados.





Apesar desses aspectos positivos, eles podem representar seus próprios problemas ao tentar solucionar a causa raiz das mensagens de erro que podem gerar.





Pergunta do nosso leitor:

Como faço para corrigir um problema C: Windows explorer.exe do Windows Vista de 32 bits em um Dell Inspiron 530?





Depois de clicar no botão OK na caixa de diálogo mostrada na imagem, a tela escurecerá e voltará ao funcionamento normal, mas não me permitirá acessar a unidade C, D e, às vezes, a unidade E ao tentar acessá-los do meu computador.

Correndo sfc / scannow não encontra nenhum erro. Baixei atualizações dos sites da Dell e da Microsoft tentando corrigir esse problema. Também instalei o Microsoft Visual C ++ 2010 Redistributable Package (x86). O PC está totalmente atualizado de acordo com o Windows Update.



Resposta de Bruce:

Nota: As discussões sobre o Windows Explorer no Windows 7 e versões anteriores também se aplicam ao File Explorer no Windows 8 e versões posteriores. Se houver uma diferença notável entre eles, isso será explicitamente declarado.

O Shell do Windows

explorador de janelas é o shell e é executado como o processo explorer.exe, conforme visto no Gerenciador de tarefas ou no Explorador de processos do Sysinternals. Como muitos outros programas do Windows, todas as funcionalidades fornecidas pelo shell não são incorporadas a esse único arquivo executável. Existem dezenas de outros arquivos EXE e DLL usados ​​para implementar folhas de propriedades, manipuladores de propriedades, manipuladores de visualização, menus de contexto e muitos outros elementos que você usa no Windows Explorer todos os dias.





Shell Extensível

As extensões do shell permitem que os programadores adicionem facilmente funcionalidades ao Windows Explorer, escrevendo uma DLL para realizar a tarefa e registrando a DLL no sistema operacional, para que o Explorer saiba onde encontrar o código para realizar a tarefa. Por exemplo, 7-Zip adiciona um submenu ao menu de contexto padrão, dando acesso rápido às tarefas de manuseio de arquivos, o Hard Disk Sentinel adiciona sobreposições de ícones aos ícones da unidade padrão, para que você possa ver o status da unidade em um relance e HashTab adiciona uma nova folha de propriedades, para calcular e exibir hashes do arquivo selecionado.

Muitas dessas extensões de shell são implementadas como servidores COM (Component Object Model) em processo. Isso significa que quando um processo, neste caso o Windows Explorer, usa a extensão, ele não aparecerá no Gerenciador de Tarefas ou no Process Explorer como um processo em execução separado com seu próprio identificador de processo (PID). Em vez disso, ele está sendo executado dentro do processo de chamada explorer.exe.





Processo de instância única padrão

O Windows Explorer foi desenvolvido para ser executado como dois processos separados, mas - em sua configuração padrão - ele executará apenas uma única instância. Quando é executado pela primeira vez como parte do processo de inicialização, ele cria o ambiente de área de trabalho do Windows. Executá-lo novamente cria um novo encadeamento no processo existente, que exibe a janela familiar de gerenciamento de arquivos, em vez de iniciar um novo processo.

Esse comportamento permite uma pegada de memória reduzida, mas também pode trazer suas próprias peculiaridades ao solucionar problemas. Um erro crítico ou exceção não tratada no código que está sendo executado no processo explorer.exe, incluindo servidores em processo fornecidos por DLLs, fará com que todo o ambiente da área de trabalho afunde com ele.

Na maioria dos casos, o processo da área de trabalho será reiniciado automaticamente. Se não reiniciar, você ainda poderá usar Ctrl-Shift-Esc para abrir o Gerenciador de Tarefas. De lá, vá para Arquivo> Nova Tarefa (Executar ...)> modelo explorer.exe> ​​OK para reiniciar o processo.

Isso pode ser evitado com uma simples mudança. Abrir Windows Explorer> Organizar> Opções de pasta e pesquisa no Vista / 7. Para Windows 8 e posterior, abra Explorador de arquivos> Exibir> Opções> Alterar pasta e opções de pesquisa . Selecione os Exibir guia e verificar Lançar janelas de pasta em um processo separado .

código de parada com falha de hardware corrompido página

Alterar essa configuração isola o processo da área de trabalho de todas as outras janelas do Windows Explorer abertas. Se alguma dessas janelas do Explorer travar, sua área de trabalho permanecerá ilesa.

Biblioteca de tempo de execução do Microsoft Visual C ++ (CRT)

O Microsoft Visual C ++ Runtime Library fornece rotinas para programação do Windows que automatizam muitas tarefas, como entrada / saída, manipulação de arquivo, alocação de memória, chamadas de sistema e muitas outras.

Cada instalação do Windows terá pelo menos duas versões diferentes do CRT instaladas. Um Vista SP2 recém-construído por meio do Windows 10 terá as versões 8.0 e 9.0 (VC 2005 e VC 2008, respectivamente) presentes. Quando software adicional é instalado, ele também pode incluir versões mais recentes dos tempos de execução, dependendo de qual versão do Visual C ++ foi usada para criar o programa ou qualquer um de seus componentes.

Erros de tempo de execução

Quando um erro ou exceção é encontrado em um trecho de código, o ideal é que ele seja tratado o mais rápido possível no procedimento em execução no momento e seja corrigido ou permitirá uma falha normal. Se o erro não for tratado localmente, ele será passado para o código que chamou o código atualmente em execução e o processo continuará até que a exceção seja tratada. Se ele completar sua execução até o topo da cadeia e ainda não for tratado, ele irá gerar um erro de tempo de execução como visto acima.

Quando o usuário clicar no botão OK, o processo será encerrado. Se o programa tiver um comportamento de falha definido, como serviços críticos, ou seu estado de execução for monitorado por outro processo, ele pode ser reiniciado automaticamente. Isso é o que está acontecendo neste caso. A tela escurece quando o processo explorer.exe é encerrado e a área de trabalho volta quando o processo explorer.exe é reiniciado.

Embora a mensagem de erro acima indique claramente que veio do processo explorer.exe, não é provável que seja um problema com o explorer.exe em si. É muito mais provável que o culpado esteja em outro lugar, como uma extensão de terceiros que está sendo usada pelo Explorer.

outras considerações

Com a descrição do problema acima feita por nosso leitor, há alguns itens adicionais que precisamos levar em consideração:

  • No momento da falha, o Explorer estava tentando, mas não conseguiu, preencher a exibição de lista.
  • A incapacidade de acessar as unidades depois que a área de trabalho foi restaurada pode indicar que outro processo tem um ou mais desses dispositivos bloqueados, impedindo assim o acesso do processo explorer.exe recém-criado.
  • Correndo sfc / scannow e obter um atestado de integridade, coloca os recursos protegidos do Windows no final da lista para consideração. Outras causas são muito mais prováveis.

As correções chegaram

Nesse caso específico, há três áreas em que eu procuraria uma solução. O primeiro envolve o serviço Windows Search, o segundo envolve a investigação de extensões de shell e o último seriam os próprios redistribuíveis VC ++.

Como a captura de tela original mostra a falha acontecendo quando o Explorer tenta preencher a exibição de lista, é possível que o serviço Windows Search esteja bloqueando o acesso aos recursos necessários. Já vi isso acontecer quando o serviço falha e não tem os parâmetros de reinicialização corretos.

pressione Win + R> modelo services.msc> OK para iniciar o console de gerenciamento com o módulo de serviços. Role para baixo até Pesquisa do Windows e clique duas vezes na entrada para abrir a caixa de diálogo Propriedades. Certifique-se de que as configurações na guia Recuperação correspondam à imagem abaixo.

O problema mais comum é a configuração 'Reiniciar serviço após:'. Este erro ocorre freqüentemente quando esta configuração é diferente de zero.

Extensões de Shell problemáticas

Download ShellExView da Nirsoft para a arquitetura do seu sistema (x86 ou x64), instale e execute-o. Levará um pouco de tempo para examinar o sistema e preencher a tabela com dados. Role até a coluna CLSID Modified Time e clique no cabeçalho para classificar neste campo. Se você deseja excluir os módulos fornecidos pela Microsoft, você pode ir para Opções> Ocultar todas as extensões da Microsoft . Para aqueles que usam uma versão de 64 bits do Windows, você também pode mostrar as extensões de 32 bits no sistema indo para Opções> Mostrar extensões de shell de 32 bits .

Procure extensões que foram adicionadas pouco antes do início dos sintomas. Selecione um ou mais e pressione F7 ou vá para Arquivo> Desativar itens selecionados ou clique no ícone LED vermelho na barra de ferramentas. Idealmente, isso deve ser feito um de cada vez.

Teste para ver se os sintomas persistem. Se o fizerem, você pode reativar a (s) extensão (ões) anteriormente desativada (s) usando F8 , Arquivo> Habilitar itens selecionados ou o ícone verde da barra de ferramentas do LED. A partir daqui, desative uma extensão diferente e repita o processo de teste até encontrar a que está causando o problema.

Reparar / reinstalar redistribuíveis VC ++

Eu uso este como último recurso, se apenas um programa estiver eliminando erros. Se você tiver vários programas que estão tendo problemas com erros de tempo de execução do VC ++, tente primeiro.

Ao olhar para os programas instalados no meu sistema ( Painel de controle> Programas e recursos ), ele mostra todas as versões dos pacotes redistribuíveis (e algumas de suas atualizações), desde a versão 8 até a versão 12 (VC ++ 2005 até VC ++ 2013). Eu os instalei por causa das ferramentas de programação da Microsoft que uso. A maioria dos usuários não terá tudo isso.

Você pode encontrar o downloads mais recentes para versões com suporte do Visual C ++ da Microsoft. Para nossos propósitos aqui, você só precisa se preocupar com aqueles que são rotulados como pacotes 'redistribuíveis'. Os links classificados como service packs são para as ferramentas de programação, não apenas para os tempos de execução. Você só precisará daqueles que estão atualmente listados nos programas instalados em seu sistema. Instalar outras versões não ajudará neste caso. Os usuários de sistemas operacionais de 64 bits podem precisar das versões x86 e x64 do CRT.

O Windows Update verifica se o seu computador tem as atualizações mais recentes para esses pacotes instaladas, mas não verifica se estão instaladas corretamente e se não foram danificadas. Os instaladores podem verificar se todos os arquivos de tempo de execução são os adequados e se todas as entradas do registro estão corretas.

Depois de baixar os instaladores apropriados, execute-os no sistema. As versões 2005 solicitarão que você aceite um contrato de licença antes de reinstalar o pacote. Todos os outros possuem uma GUI que perguntará se você deseja reparar ou desinstalar a instalação existente. Na maioria dos casos, uma operação de reparo corrigirá todos os problemas.

Se você quiser tentar o método mais extremo, pode desinstalar os tempos de execução, reinicializar a máquina e reinstalá-los. Não recomendo esse método com os tempos de execução de 2005 e 2008. Sem eles, o Windows irá gerar muitos erros e muitas funcionalidades não estarão disponíveis para você quando você reiniciar.

Conclusão

Com um pouco de observação, um toque de tentativa e erro e alguma compreensão de como os erros são gerados em tempos de execução no sistema, os problemas de software podem ser encontrados e resolvidos sem recorrer a ferramentas e logs de depuração complicados.

Você já se deparou com erros de tempo de execução em seu sistema? O que foi necessário para resolvê-los? Deixe-me saber nos comentários abaixo.

Compartilhado Compartilhado Tweet O email Veja por que o FBI emitiu um aviso para Hive Ransomware

O FBI emitiu um alerta sobre uma cepa particularmente desagradável de ransomware. Veja por que você precisa ser especialmente cauteloso com o ransomware Hive.

Leia a seguir
Tópicos relacionados
  • janelas
  • Tecnologia Explicada
  • Pergunte aos especialistas
  • explorador de janelas
  • janelas
  • Explorador de arquivos
  • Windows Search
  • Solução de problemas
Sobre o autor Bruce Epper(13 artigos publicados)

Bruce brinca com eletrônica desde os anos 70, computadores desde o início dos anos 80 e responde com precisão a perguntas sobre tecnologia que não usou nem viu o tempo todo. Ele também se irrita tentando tocar violão.

Mais de Bruce Epper

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever