# O que é o COM Surrogate e por que ele está rodando no Windows

COM Surrogate é um processo normal do Windows, o `dllhost.exe` em `C:\Windows\System32`, que roda um componente em um processo separado para que uma falha ali não derrube o programa que o pediu. O motivo mais comum de você vê-lo é o Explorador de Arquivos gerando miniaturas. Várias cópias são normais, e uma que aparece e some enquanto você navega pelas pastas está fazendo o trabalho dela. Uma cópia que continua ocupada, ou um arquivo "aberto no COM Surrogate", normalmente aponta para um único tratador de miniaturas ou para um arquivo ruim.

## Por que ele existe

Os programas do Windows costumam carregar código extra como um componente COM em uma DLL. Se essa DLL falha dentro do programa, o programa inteiro cai junto. Raymond Chen explica no [Old New Thing da Microsoft](https://devblogs.microsoft.com/oldnewthing/20090212-00/?p=19173) que o Explorer usa o COM Surrogate para extrair miniaturas, então uma falha em um extrator de miniaturas destrói o processo substituto em vez do Explorer. Isso também explica a velha mensagem "O COM Surrogate parou de funcionar": em geral quer dizer que um componente falhou ali dentro, e o Explorer sobreviveu por causa do projeto.

O Windows o inicia pedindo um componente específico:

```text
C:\Windows\System32\dllhost.exe /Processid:{AB8902B4-09CA-4BB6-B78D-A8F59079A8D5}
```

Esse ID é o que se deve pesquisar, e esse em particular é o cache de miniaturas do Windows. Outros programas usam o mesmo processo para os próprios componentes, e por isso o nome sozinho diz pouco sobre quem está por trás de uma cópia ocupada.

## Descubra qual é o componente

1. Pressione `Ctrl + Shift + Esc` e abra a guia **Detalhes**.
2. Clique com o botão direito em um cabeçalho de coluna, escolha **Selecionar colunas** e marque **Linha de comando**.
3. Encontre `dllhost.exe` e leia o ID depois de `/Processid:`.

Ou liste todas as cópias pelo PowerShell:

```powershell
Get-CimInstance Win32_Process | Where-Object Name -eq 'dllhost.exe' | Select-Object ProcessId, CommandLine
```

Depois pesquise o ID, trocando-o pelo seu:

```powershell
(Get-ItemProperty 'Registry::HKEY_CLASSES_ROOT\CLSID\{AB8902B4-09CA-4BB6-B78D-A8F59079A8D5}').'(default)'
```

No Windows 11 esse retorna `Thumbnail Cache Class Factory for Out of Proc Server`. Se o seu nomear um produto de terceiros, a atualização ou a remoção desse produto é a solução.

## O que fazer para cada sintoma

| Você vê | Causa provável | Tente |
| --- | --- | --- |
| CPU ou disco altos enquanto uma pasta está aberta | Miniaturas sendo geradas para muitos arquivos grandes | Espere passar, ou mude a exibição dessa pasta para **Detalhes** |
| CPU alta na mesma pasta toda vez | Um arquivo de mídia danificado, ou um codec que falha nele | Tire os arquivos da pasta em lotes para achá-lo e depois atualize ou remova o pacote de codecs |
| "A ação não pode ser concluída porque o arquivo está aberto no COM Surrogate" | Um tratador de miniaturas ainda segura aquele arquivo | Feche o painel de visualização e a pasta, espere alguns segundos e tente de novo |
| Ele trava sempre ou "parou de funcionar" | Um componente de terceiros quebrado | Leia o ID como acima e depois atualize ou remova esse software |
| Miniaturas erradas ou antigas | Um cache de miniaturas danificado | Limpe **Miniaturas** na Limpeza de Disco, veja [Limpeza de Disco ou Sensor de Armazenamento](/pt-br/windows/blog/disk-cleanup-vs-storage-sense-windows) |

Para parar de gerar miniaturas de vez, abra **Explorador de Arquivos › Ver mais (…) › Opções › Modo de Exibição** e marque **Sempre mostrar ícones, nunca miniaturas**. Isso tira a carga ao custo das imagens nas pastas. É também um bom teste: se o problema parar, as miniaturas eram a causa.

## É um vírus

O verdadeiro é um arquivo assinado pela Microsoft em `C:\Windows\System32`, com uma cópia de 32 bits em `C:\Windows\SysWOW64`. Um malware pode usar o nome emprestado, e também pode rodar código próprio dentro de um `dllhost.exe` genuíno, então um caminho correto é boa evidência, mas não prova. Confira o arquivo primeiro:

```powershell
Get-AuthenticodeSignature C:\Windows\System32\dllhost.exe
```

O signatário deve ser `Microsoft Windows`. Desconfie de um `dllhost.exe` rodando de qualquer outro lugar, de uma cópia com muita atividade de rede ou de um ID de componente que aponte para um arquivo em `AppData` ou `Temp`. Se algum desses casos se aplicar, rode uma verificação completa com o Microsoft Defender.

## O que não fazer

- Não apague o `dllhost.exe` nem o bloqueie. O Windows e muitos programas dependem dele, e o Verificador de Arquivos do Sistema vai tratar uma cópia ausente como dano.
- Não espere que encerrá-lo seja uma solução. Encerrar uma cópia travada é seguro, já que uma miniatura ou uma janela pode falhar e o Windows inicia outra quando precisar, mas a causa continua lá.
- Não o adicione às exceções da Prevenção de Execução de Dados, como sugerem guias antigos. Isso reduz uma proteção sem achar o componente quebrado.
- Não instale um limpador de registro nem um "corretor de DLL" para isso. Nenhum dos dois identifica qual componente está falhando.

## Onde o Mole entra

A página Status do Mole para Windows reúne o COM Surrogate em uma linha por sessão, com CPU e memória somadas entre as cópias. **Por que está em execução?** no menu da linha lista as cópias mais pesadas com PID, CPU e memória, e mostra o **Executável**, o que o iniciou e, para uma cópia rodando sem elevação na sua própria conta, o **Comando** com o `/Processid`, o que dispensa as colunas do Gerenciador de Tarefas. Clique em uma cópia para ver os detalhes dela. Como o COM Surrogate roda da pasta do Windows, o Mole o marca como Sistema e não oferece **Encerrar** nem **Forçar encerramento**, então use o Gerenciador de Tarefas se precisar encerrar uma cópia travada. O Mole não repara tratadores de miniaturas, e a página Limpar dele não tem uma linha para o cache de miniaturas, então use a Limpeza de Disco para isso. Para um panorama maior, veja [o que fazem os processos comuns do Windows](/pt-br/windows/blog/windows-processes-explained).

## Perguntas frequentes

### O que é o COM Surrogate?

É o `dllhost.exe`, um processo do Windows que hospeda um componente fora do programa que o usa. Uma falha ali fica ali. O Explorador de Arquivos o usa para miniaturas, e outros programas também.

### Por que há tantos processos COM Surrogate?

Cada cópia hospeda um componente, então várias ao mesmo tempo é normal. Muitas saem sozinhas depois de ficarem ociosas.

### Posso encerrar o COM Surrogate?

Pode, encerrar uma cópia travada é seguro, e o Windows inicia outra quando for preciso. Se a mesma cópia volta ocupada sempre, descubra o ID do componente em vez de encerrá-la repetidamente.

### Por que aparece que um arquivo está aberto no COM Surrogate?

Um tratador de miniaturas está lendo esse arquivo. Feche a pasta e qualquer painel de visualização, espere alguns segundos e tente de novo. Se continuar acontecendo com o mesmo tipo de arquivo, ligue **Sempre mostrar ícones, nunca miniaturas** para confirmar a causa.

### O COM Surrogate é um vírus?

O arquivo genuíno não é. Confira se ele roda de `C:\Windows\System32` ou `C:\Windows\SysWOW64` e se está assinado pelo Microsoft Windows, e depois veja qual componente ele hospeda.


Canonical: https://mole.fit/pt-br/windows/blog/com-surrogate-dllhost
