# Wat is COM Surrogate en waarom draait het in Windows

COM Surrogate is een normaal Windows-proces, `dllhost.exe` in `C:\Windows\System32`, dat een component in een apart proces uitvoert, zodat een fout daarin het programma dat erom vroeg niet meeneemt. Meestal zie je het doordat Verkenner miniaturen maakt. Meerdere exemplaren zijn normaal, en een exemplaar dat verschijnt en verdwijnt terwijl je door mappen bladert doet gewoon zijn werk. Een exemplaar dat druk blijft, of een bestand dat "geopend is in COM Surrogate", wijst meestal op één miniatuurhandler of één kapot bestand.

## Waarom het bestaat

Windows-programma's laden vaak extra code als COM-component in een DLL. Als die DLL in het programma crasht, gaat het hele programma mee. Raymond Chen legt op [Microsofts Old New Thing](https://devblogs.microsoft.com/oldnewthing/20090212-00/?p=19173) uit dat Verkenner COM Surrogate gebruikt bij het ophalen van miniaturen, zodat een crash in een miniatuurextractor het surrogaatproces vernietigt en niet Verkenner zelf. Dat verklaart ook de oude melding "COM Surrogate werkt niet meer": meestal is daar een component gecrasht, en Verkenner bleef overeind dankzij het ontwerp.

Windows start het door om een specifieke component te vragen:

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

Die ID is wat je moet opzoeken, en deze hoort bij de miniatuurcache van Windows. Andere programma's gebruiken hetzelfde proces voor hun eigen componenten, en daarom zegt de naam alleen weinig over wie achter een druk exemplaar zit.

## Uitzoeken welke component het is

1. Druk op `Ctrl + Shift + Esc` en open het tabblad **Details**.
2. Klik met de rechtermuisknop op een kolomkop, kies **Kolommen selecteren** en vink **Opdrachtregel** aan.
3. Zoek `dllhost.exe` en lees de ID na `/Processid:`.

Of toon alle exemplaren vanuit PowerShell:

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

Zoek daarna de ID op, en vervang hem door de jouwe:

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

Op Windows 11 geeft deze `Thumbnail Cache Class Factory for Out of Proc Server`. Noemt de jouwe een product van een derde partij, dan is de update of verwijdering van dat product de oplossing.

## Wat je per symptoom kunt doen

| Je ziet | Waarschijnlijke oorzaak | Probeer |
| --- | --- | --- |
| Hoog CPU- of schijfgebruik terwijl één map open is | Miniaturen worden gemaakt voor veel grote bestanden | Even wachten, of de weergave van die map op **Details** zetten |
| Hoog CPU-gebruik steeds in dezelfde map | Eén beschadigd mediabestand, of een codec die erop faalt | Verplaats bestanden in groepen weg om het te vinden, en werk dan het codecpakket bij of verwijder het |
| "De actie kan niet worden voltooid omdat het bestand is geopend in COM Surrogate" | Een miniatuurhandler houdt dat bestand nog vast | Sluit het voorbeeldvenster en de map, wacht een paar seconden en probeer opnieuw |
| Het blijft crashen of "werkt niet meer" | Een kapotte component van een derde partij | Lees de ID zoals hierboven, en werk die software dan bij of verwijder haar |
| Verkeerde of verouderde miniaturen | Een beschadigde miniatuurcache | Wis **Miniaturen** in Schijfopruiming, zie [Schijfopruiming of Opslaginzicht](/nl/windows/blog/disk-cleanup-vs-storage-sense-windows) |

Om helemaal geen miniaturen meer te maken, open je **Verkenner › Meer weergeven (…) › Opties › Weergave** en vink je **Altijd pictogrammen weergeven, nooit miniaturen** aan. Dat haalt de belasting weg ten koste van de plaatjes in mappen. Het is ook een goede test: stopt het probleem, dan waren miniaturen de oorzaak.

## Is het een virus

Het echte bestand is een door Microsoft ondertekend bestand in `C:\Windows\System32`, met een 32-bits exemplaar in `C:\Windows\SysWOW64`. Malware kan de naam lenen, en kan ook eigen code uitvoeren binnen een echte `dllhost.exe`, dus een juist pad is een goede aanwijzing maar geen bewijs. Controleer eerst het bestand:

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

De ondertekenaar moet `Microsoft Windows` zijn. Wees achterdochtig bij een `dllhost.exe` die ergens anders draait, een exemplaar met veel netwerkactiviteit, of een component-ID die naar een bestand in `AppData` of `Temp` wijst. Past een van die dingen, voer dan een volledige scan uit met Microsoft Defender.

## Wat je niet moet doen

- Verwijder `dllhost.exe` niet en blokkeer het niet. Windows en veel programma's hangen ervan af, en Systeembestandscontrole beschouwt een ontbrekend exemplaar als schade.
- Verwacht niet dat beëindigen een oplossing is. Het is veilig om een vastgelopen exemplaar te beëindigen, want een miniatuur of dialoogvenster kan falen en Windows start een nieuw exemplaar wanneer nodig, maar de oorzaak blijft bestaan.
- Voeg het niet toe aan de uitzonderingen van Gegevensuitvoeringspreventie, zoals oudere handleidingen voorstellen. Dat verlaagt een beveiliging zonder de kapotte component te vinden.
- Installeer hiervoor geen registryopschoner of "DLL-fixer". Geen van beide bepaalt welke component faalt.

## Waar Mole past

De pagina Status van Mole for Windows voegt COM Surrogate samen tot één rij per sessie, met CPU en geheugen opgeteld over alle exemplaren. **Waarom draait dit?** in het menu van de rij toont de zwaarste exemplaren met hun PID, CPU en geheugen, en het **Uitvoerbaar bestand**, wat het heeft gestart en, voor een exemplaar dat zonder verhoogde rechten onder je eigen account draait, de **Opdracht** met zijn `/Processid`, wat de kolommen van Taakbeheer bespaart. Klik op een exemplaar voor zijn eigen details. Omdat COM Surrogate vanuit de Windows-map draait, markeert Mole het als Systeem en biedt het geen **Beëindig** of **Forceer stop**, dus gebruik Taakbeheer als je een vastgelopen exemplaar wilt beëindigen. Mole repareert geen miniatuurhandlers, en de pagina Opschonen heeft geen rij voor de miniatuurcache, dus gebruik daarvoor Schijfopruiming. Voor meer achtergrond zie [wat veelvoorkomende Windows-processen doen](/nl/windows/blog/windows-processes-explained).

## Veelgestelde vragen

### Wat is COM Surrogate?

Het is `dllhost.exe`, een Windows-proces dat een component buiten het programma host dat het gebruikt. Een crash daar blijft daar. Verkenner gebruikt het voor miniaturen, en andere programma's gebruiken het ook.

### Waarom zijn er zoveel COM Surrogate-processen?

Elk exemplaar host één component, dus meerdere tegelijk is normaal. Veel ervan sluiten zelf af zodra ze een tijd inactief zijn geweest.

### Kan ik COM Surrogate beëindigen?

Ja, een vastgelopen exemplaar beëindigen is veilig en Windows start een nieuw exemplaar wanneer het nodig is. Komt hetzelfde exemplaar steeds druk terug, zoek dan zijn component-ID in plaats van het herhaaldelijk te beëindigen.

### Waarom staat er dat een bestand is geopend in COM Surrogate?

Een miniatuurhandler leest dat bestand. Sluit de map en elk voorbeeldvenster, wacht een paar seconden en probeer opnieuw. Gebeurt het steeds met hetzelfde bestandstype, zet dan **Altijd pictogrammen weergeven, nooit miniaturen** aan om de oorzaak te bevestigen.

### Is COM Surrogate een virus?

Het echte bestand niet. Controleer dat het draait vanuit `C:\Windows\System32` of `C:\Windows\SysWOW64` en is ondertekend door Microsoft Windows, en kijk dan welke component het host.


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