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

Erros do Visual C ++ são um problema comum para usuários do Windows. Mas você sabe como consertá-los?

Erros do Visual C ++ são um problema comum para usuários do Windows.  Mas você sabe como consertá-los?
Propaganda

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 executar uma tarefa comum. Eles também facilitam a conexão de brechas de segurança no código compartilhado quando elas são encontradas, pois precisam ser corrigidas em menos locais e não exigem que cada aplicativo seja recompilado.

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

A pergunta do nosso leitor:

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

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

Executando o sfc / scannow não encontra nenhum erro. Baixei as atualizações dos sites da Dell e da Microsoft tentando corrigir esse problema. Eu também instalei o Pacote Redistribuível do Microsoft Visual C ++ 2010 (x86). O PC está completamente atualizado de acordo com o Windows Update.

erro de tempo de execução

Resposta de Bruce:

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

O shell do Windows

O Windows Explorer é o shell e é executado como o processo explorer.exe, como visto no Gerenciador de Tarefas ou Process Explorer do Processo da Sysinternals - A Substituição do Gerenciador de Tarefas Mais Poderosa [Windows] Process Explorer - A Substituição do Gerenciador de Tarefas Mais Poderosa [Windows] Vamos ser honestos, o Gerenciador de Tarefas do Windows não é ótimo para entender e gerenciar os processos em execução no seu computador. Mesmo no Windows 8, onde melhorou muito, o gerenciador de tarefas não pode se aproximar do ... Leia Mais. Como muitos outros programas do Windows, todas as funcionalidades fornecidas pelo shell não são incorporadas nesse único arquivo executável. Existem dezenas de outros arquivos EXE e DLL Como corrigir erros de arquivos DLL ausentes Como corrigir erros de arquivos DLL ausentes Leia mais usado 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 dia.

Concha Extensível

As extensões do shell permitem que os programadores adicionem funcionalidade facilmente ao Windows Explorer, gravando uma DLL para executar a tarefa e registrando a DLL com o sistema operacional, para que o Explorer saiba onde encontrar o código para realizar a tarefa. Por exemplo, 7-Zip Como extrair arquivos de ZIP, RAR, 7z e outros arquivos comuns Como extrair arquivos de ZIP, RAR, 7z e outros arquivos comuns Você já se deparou com um arquivo .rar e perguntou como abri-lo? Felizmente, gerenciar arquivos ZIP e outros arquivos compactados é simples com as ferramentas certas. Aqui está o que você precisa saber. Leia Mais adiciona um submenu ao menu de contexto padrão, dando acesso rápido às tarefas de manuseio de arquivos, Hard Disk Sentinel Fique de olho no seu HDD e SSD Saúde com o Disco Rígido Sentinel Fique de olho no HDD e no SSD Saúde com o disco rígido Sentinel Você já teve uma falha no drive? Infelizmente, não há panacéia para evitar danos ao hardware. Mas monitorar seu HDD ou SSD, para agir quando a morte deles se tornar provável, é um primeiro passo. Ler mais adiciona sobreposições de ícone aos ícones de unidade padrão, para que você possa ver o status de funcionamento da unidade rapidamente e o HashTab adiciona uma nova folha de propriedades para calcular e exibir os hashes do arquivo selecionado.

menu contextual

Muitas dessas extensões de shell são implementadas como servidores COM-Component Object Model (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 de execução separado com seu próprio identificador de processo (PID). Em vez disso, ele está sendo executado no processo de exploração do explorer.exe.

Processo Padrão de Instância Única

O Windows Explorer foi escrito para ser capaz de ser executado como dois processos separados, mas - em sua configuração padrão - só executará 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 sua própria pequena distorção 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 de área de trabalho fique inativo.

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

Isso pode ser evitado com uma simples mudança. Abra o Windows Explorer> Organizar> Pasta e opções de pesquisa no Vista / 7. Para o Windows 8 e versões posteriores, abra o File Explorer> Visualizar> Opções> Alterar opções de pasta e pesquisa . Selecione a guia Exibir e marque Iniciar janelas de pasta em um processo separado .

opções de Pasta

Alterar essa configuração isola o processo da área de trabalho de todas as outras janelas do Windows Explorer abertas. Se qualquer uma dessas janelas do Explorer falhar, sua área de trabalho permanecerá intacta.

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 arquivos, alocação de memória, chamadas do sistema e muitas outras.

Cada instalação do Windows terá pelo menos duas versões diferentes do CRT instalado. Um recém-construído Vista SP2 através da máquina Windows 10 terá ambas as versões 8.0 e 9.0 (VC 2005 e VC 2008, respectivamente) presentes. Quando um 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 dos 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 atualmente em execução e seja corrigido ou permita 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 concluir sua execução no topo da cadeia e ainda não for manipulado, ele gerará um erro de tempo de execução, como visto acima.

Quando o usuário clica no botão OK, o processo será encerrado. Se o programa tiver um comportamento de falha definido, como serviços críticos, ou se seu estado de execução for monitorado por outro processo, ele poderá ser automaticamente reativado. Isto é o que está acontecendo nesta instância. A tela escurece quando o processo explorer.exe é finalizado e, em seguida, 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 próprio explorer.exe. É 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 de nosso leitor do problema acima, há alguns itens adicionais que precisamos levar em consideração:

  • No momento da falha, o Explorer estava tentando, mas não conseguiu, preencher o listview.
  • A incapacidade de acessar as unidades depois que a área de trabalho reapareceu, pode indicar que outro processo bloqueou um ou mais desses dispositivos, impedindo assim o acesso do processo explorer.exe recém-criado.
  • Executando o sfc / scannow e obtendo um bom histórico de saúde, descarta os recursos protegidos do Windows na parte inferior da lista para consideração. Outras causas são muito mais prováveis.

As correções estão em

Neste caso particular, existem três áreas onde eu procuraria uma solução. O primeiro envolve o serviço de pesquisa do Windows, o segundo envolve a investigação de extensões do shell e o último seria os próprios redistribuíveis do VC ++.

Pesquisa do Windows

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

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

windows-search-properties

O problema mais comum é a configuração “Restart service after:”. Esse erro ocorre com freqüência quando essa configuração é diferente de zero.

Extensões de Shell Problemáticas

Faça o download do ShellExView da Nirsoft para sua arquitetura de 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 nesse 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, talvez você também queira mostrar as extensões de 32 bits no sistema indo em Opções> Exibir extensões de shell de 32 bits .

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

Teste para ver se os sintomas persistem. Em caso afirmativo, você pode reativar as extensões desativadas anteriormente 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 o que está causando o problema.

Reparar / Reinstalar Redistribuíveis VC ++

Eu uso este como um último recurso, se apenas um programa está retrocedendo erros. Se você tiver vários programas que estão tendo problemas com erros de tempo de execução do VC ++, convém tentar isso 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) variando da versão 8 até a versão 12 (VC ++ 2005 até VC ++ 2013). Eu tenho eles instalados por causa das ferramentas de programação da Microsoft que eu uso. A maioria dos usuários não terá todos esses recursos.

instalado-vcpp-redist

Você pode encontrar os downloads mais recentes para versões com suporte do Visual C ++ da Microsoft. Para os 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á dos 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 possui as atualizações mais recentes para esses pacotes, mas não verifica se está devidamente instalado e não foi quebrado. Os instaladores podem verificar se todos os arquivos de tempo de execução são adequados e se todas as entradas do registro estão corretas.

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

Se você quiser experimentar o método mais extremo, poderá desinstalar os tempos de execução, reinicializar a máquina e reinstalá-los. Eu não recomendo este método com os tempos de execução de 2005 e 2008. Sem eles, o Windows gerará muitos erros e uma grande quantidade de funcionalidades não estará disponível quando você reiniciar.

Conclusão

Com um pouco de observação, um toque de tentativa e erro e algum entendimento de como os erros são gerados a partir dos tempos de execução do 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.

In this article