Windows Event ID 10010 is a DCOM error logged when a server fails to register its class factory within the required timeout, indicating a COM communication failure.
# PowerShell - Get last 10 DCOM 10010 events
Get-WinEvent -LogName System -MaxEvents 10 | Where-Object { $_.Id -eq 10010 } | Format-List
Retrieve and resolve Event ID 10010 using native Windows tools. Commands below apply to Windows 10 22H2, Windows 11 23H2, and Windows Server 2022.
Windows Event ID 10010 Syntax Reference
Query the System event log for Event ID 10010 with PowerShell or wevtutil. The following examples fetch the last 10 occurrences with full detail.
# PowerShell - Get last 10 DCOM 10010 events
Get-WinEvent -LogName System -MaxEvents 10 | Where-Object { $_.Id -eq 10010 } | Format-List
# wevtutil - Export to XML for offline analysis
wevtutil qe System /q:"*[System[EventID=10010]]" /c:10 /e:Root
For live monitoring, use Get-WinEvent with a hash table filter:
$filter = @{LogName='System';ID=10010}
Get-WinEvent -FilterHashTable $filter -MaxEvents 5 | Select TimeCreated, Message
Windows Event ID 10010 Rapid Reference Cheat Sheet
| Action | CLI Command | Provider/Context | Key Flag | Impact/Result |
|---|---|---|---|---|
| Query last N events | Get-WinEvent -LogName System -MaxEvents 10 | Where {$_.Id -eq 10010} |
PowerShell | -MaxEvents | Returns the most recent events |
| Export to CSV | Get-WinEvent -FilterHashTable @{LogName='System';ID=10010} | Export-Csv events.csv |
PowerShell | Export-Csv | Archive for trend analysis |
| Query via wevtutil | wevtutil qe System /q:"*[System[EventID=10010]]" /c:50 /f:text |
CMD / wevtutil | /q, /c | Text output, useful in batch scripts |
| Start Function Discovery service | net start fdPHost |
CMD | N/A | Resolves registration failures for resource publication |
| Check DCOM launch permissions | dcomcnfg (launches GUI) |
COM+ / MMC | N/A | Manually verify DCOM security bindings |
| Disable Game Bar Presence Writer | reg add "HKLMSOFTWAREMicrosoftWindowsRuntimeActivatableClassIdWindows.Gaming.GameBar.PresenceServer.Internal.PresenceWriter" /v ActivationType /t REG_DWORD /d 0 /f |
CMD / Registry | Reg add | Stops 10010 errors related to Xbox GamingOverlay |
Advanced Implementation & Parameters
Understanding DCOM Registration Timeout
When a COM server fails to register its class factory within the DCOM timeout window, the system logs Event ID 10010 with the failing CLSID. The timeout can be adjusted via registry or Component Services MMC, but reducing it may cause false positives. Default timeout is typically 120 seconds in Windows 10/11 and Server 2016+.
# Registry path for DCOM timeout (in seconds)
HKEY_LOCAL_MACHINESOFTWAREMicrosoftOleDefaultTimeout
# Application-specific timeout example (CLSID-dependent)
HKEY_CLASSES_ROOTCLSID{00000000-0000-0000-0000-000000000000}LocalServer32
Event Detail Parsing
Each 10010 event contains the failing server’s CLSID and AppID. Use PowerShell to extract and identify the application:
# Extract AppID from event XML and resolve to display name
$events = Get-WinEvent -FilterHashTable @{LogName='System';ID=10010} -MaxEvents 1
$xml = [xml]$events[0].ToXml()
$appId = $xml.Event.EventData.Data | Where {$_.Name -eq 'param1'} | Select -ExpandProperty '#text'
# Query registry for AppID friendly name
Get-ItemProperty -Path "HKCR:AppID$appId" | Select-Object AppID, @{N='Name';E={$_.'(default)'}}
Error Resolution & Troubleshooting
| Error Code / Signal | Root Cause | Remediation Command |
|---|---|---|
| Event ID 10010, CLSID related to GameBar | Xbox GamingOverlay update broke PresenceServer composition; service fails to start. | reg add "HKLMSOFTWAREMicrosoftWindowsRuntimeActivatableClassIdWindows.Gaming.GameBar.PresenceServer.Internal.PresenceWriter" /v ActivationType /t REG_DWORD /d 0 /f |
| 0x80040154 – Class not registered | COM server DLL missing or not registered. | regsvr32 <path_to_dll> or reinstall affected component. |
| 0x80080005 – Server execution failure | DCOM identity or permission problem; often caused by Network Service account missing privileges. | dcomcnfg → Component Services → Computers → My Computer → DCOM Config → right‑click failing component → Properties → Identity → change to Interactive User (test only). |
| Event 10010 logged every minute | Function Discovery Resource Publication service stopped or set to Manual. | sc config fdPHost start= auto && net start fdPHost |
| 10010 after Windows cumulative update | Update disrupted DCOM registration cache – restart system, then rebuild COM+ catalog. | regsvr32 /s comsvcs.dll followed by reboot. |
Step‑by‑Step Resolution
- Identify the failing component: In Event Viewer → Windows Logs → System, locate Event 10010. Note the
CLSIDandAppIDfrom the Details pane. - Check affected service: Open Services.msc and verify that
Function Discovery Resource Publicationis running (automatic start). If not, enable it with:sc config fdPHost start= auto net start fdPHost - Disable problematic gaming service: If the CLSID matches
{...GameBar.PresenceWriter...}, apply the registry workaround:reg add "HKLMSOFTWAREMicrosoftWindowsRuntimeActivatableClassIdWindows.Gaming.GameBar.PresenceServer.Internal.PresenceWriter" /v ActivationType /t REG_DWORD /d 0 /f - Repair DCOM permissions: Use
dcomcnfg→ Component Services → Computers → My Computer → Properties → COM Security → Edit Default Launch Permissions → AddNETWORK SERVICEwith Local Launch permission. - Reinstall affected overlay: Open PowerShell as admin and run:
Get-AppxPackage *xboxgamingoverlay* | Remove-AppxPackage Get-AppxPackage *xbox* | Remove-AppxPackage -AllUsers # Then reinstall from Microsoft Store or via winget: winget install "Xbox Game Bar"
Production-Grade Implementation
In enterprise environments, periodic logging of Event ID 10010 should not be ignored. Use the following best practices to harden DCOM:
- Monitor with Windows Event Forwarding: Collect events from domain members to a central collector using
wecutilor Azure Arc. - Apply least privilege: Do not set DCOM identity to Interactive User for production servers; use specific service accounts with only required launch/access permissions.
- Use Group Policy: Deploy the registry fix for GameBar Presence Writer via
Computer Configuration → Preferences → Windows Settings → Registry. - Patch management baseline: Test cumulative updates in a pilot group before broad deployment; errors like 10010 are often transient after a reboot.
- Automate rollback: If an update triggers widespread 10010 errors, script the removal of the update with
wusa /uninstall /kb:5031445 /quiet /norestartand schedule reboot during maintenance window.
Frequently Asked Questions
What is the difference between wevtutil qe and Get-WinEvent when retrieving Event ID 10010?
Answer: wevtutil outputs plain text requiring manual parsing; Get-WinEvent returns structured objects. To fetch the latest Event ID 10010 with PowerShell:
Get-WinEvent -FilterHashtable @{LogName='System'; ID=10010} -MaxEvents 1
With wevtutil (text output, newest first):
wevtutil qe System /q:"*[System[EventID=10010]]" /c:1 /rd:true /f:text
When should I use the -MaxEvents flag with Get-WinEvent for Event ID 10010?
Answer: Use -MaxEvents 1 to isolate the latest occurrence for immediate diagnosis. For a quick overview of recent failures, -MaxEvents 5 suffices. Avoid unlimited queries on busy systems to reduce overhead.
Example with selective properties:
Get-WinEvent -FilterHashtable @{LogName='System'; ID=10010} -MaxEvents 1 | Select-Object -Property TimeCreated, Message
How do I fix Event ID 10010 ‘The server {CLSID} did not register with DCOM within the required timeout’?
Answer: Identify the failing CLSID from the event, then either reinstall the associated application or extend the DCOM timeout via registry (under HKLMSoftwareMicrosoftOleDefaultTimeout). Alternatively, use Component Services MMC (dcomcnfg) to adjust the default timeout for the specific application.
Does Event ID 10010 appear on Windows Server 2022 and Windows 11?
Answer: Yes. Event ID 10010 exists in all Windows versions since Windows 8 / Server 2012. Behaviour and remedies are identical across editions, including cloud instances (AWS EC2, Azure VM). Verify the system log is enabled:
Get-WinEvent -ListLog System | Where-Object {$_.IsEnabled}
What is the fastest way to query Event ID 10010 across multiple remote servers?
Answer: Use Invoke-Command with Get-WinEvent in parallel via ForEach-Object -Parallel. Example:
$servers = 'Server01','Server02','Server03'
$jobs = $servers | ForEach-Object -Parallel {
Invoke-Command -ComputerName $_ -ScriptBlock {
Get-WinEvent -FilterHashtable @{LogName='System'; ID=10010} -MaxEvents 5
}
} -AsJob
$results = Receive-Job $jobs -Wait
If PowerShell remoting is unavailable, use wevtutil with remote UNC paths.

Command Line Expert & Software Engineer
Welcome! I’m Thomas Heinrich, a software engineer and system administrator with a deep passion for the Command Line Interface (CLI). With years of experience navigating the terminal, building backend architectures, and automating server deployments, I created this space to share practical, real-world terminal knowledge.
Whether you are a beginner taking your first steps in a Linux environment or a seasoned DevOps engineer looking to optimize your deployment scripts, you will find actionable solutions here. My goal is to help you ditch the mouse, speed up your workflow, and harness the full power of the command line.