Product / Environment:
- OS: Windows Server 2025 (LTSC), build 10.0.26100.32684
- Application: [Mediaroom] - Windows Installer (MSI)-based deployment that registers multiple manifest-based performance counter providers via
lodctr.exe /m:"<name>.man" during install (approx. 25+ separate providers, one .man file each)
Summary: After a clean installation on Windows Server 2025, all of our manifest-based performance counter providers register successfully according to the installer log, but they are not usable in Performance Monitor: the object appears only as a raw provider GUID (no friendly name), and expanding it to view counters fails with "Can't load counters." This matches the signature of a known Windows Server 2025 regression reported in a Microsoft Q&A thread (referenced below) for a different product (Configuration Manager), and we would like to confirm whether we are hitting the same root cause.
Evidence from our install log: For every provider, the deferred custom action log shows successful registration, e.g.:
Executing op: CustomActionSchedule(Action=RegisterPerfmonManifest,ActionType=3073,Source=BinaryData,Target=CAQuietExec,CustomActionData="lodctr.exe" /m:"C:\Program Files\xxx\manifest\PerfCounters\Syncserver.man"
Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSIxxxx.tmp, Entrypoint: CAQuietExec
CAQuietExec:
CAQuietExec: Info: Successfully installed performance counters from file "C:\Program Files\<Our Product>\manifest\PerfCounters\Syncserver.man".
This pattern repeats with a "Successfully installed" result for every one of our ~25 .man manifests, with no errors, no non-zero return codes, and no privilege issues (MSI_LUA logs confirm the custom actions ran "with sufficient privileges").
Symptom:
- Open perfmon.exe, Add Counters
- The provider is listed only as its raw GUID (e.g.
{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}), not by its intended friendly name
- Expanding it, shows no counters (Cant load counters)

Confirmed workaround (no file replacement required): From an elevated, interactive Command Prompt, re-running:
unlodctr.exe /m:"C:\Program Files\<Our Product>\manifest\PerfCounters\<Name>.man"
lodctr.exe /m:"C:\Program Files\<Our Product>\manifest\PerfCounters\<Name>.man"
immediately resolves the issue for that provider — the friendly name and counters then appear correctly in Performance Monitor. No files (e.g., loadperf.dll) needed to be replaced.
Things we've ruled out:
- Not a permissions/UAC issue (installer log confirms elevated context throughout)
- Not a corrupted/incorrect manifest (same manifest, re-registered manually, works)
-
winmgmt /resyncperf does not resolve the issue (expected, since this is PerfLib V2 registration and does not go through the WMI/PerfLib bridge that command refreshes)
Suspected root cause: Based on the above, we suspect this is a name-resolution/enumeration failure between PerfLib and PDH (pdh.dll) — the raw provider registration succeeds, but something in the provider-list/name-string cache consumed by PDH during Performance Monitor's enumeration is not refreshed when many providers are registered in rapid succession within an MSI deferred custom action context (all ~25 of ours register within a few seconds during install). A manual, isolated re-registration outside of that context appears to correctly trigger whatever cache/notification step is missing.
Reference to a possible duplicate: We found a Microsoft Q&A thread describing what appears to be the same underlying symptom on Windows Server 2025 - a performance counter provider (SMS_INVENTORY_DATA_LOADER, used by Configuration Manager) that registers successfully in Perflib but remains invisible to PDH enumeration: https://learn.microsoft.com/en-us/answers/questions/5807044/log-flooding-counterthreadproc-mifs-min-counter-mi
In that thread, a Microsoft engineer confirmed it as a known issue in Windows Server 2025 (and future OS builds), stated that a fix has been developed but did not meet the bar for backporting to the already-released OS, with no ETA earlier than autumn 2026.
Questions for Microsoft:
- Can you confirm whether our issue and the one described in Q&A thread 5807044 share the same root cause / are tracked under the same internal bug? If the answer is yes,
- Is there an official KB article or public tracking ID for this issue that we can reference for our own customers?
- Is there a supported workaround or hotfix currently available (outside of manually re-running
unlodctr/lodctr after install)?
- Can you confirm/update the expected fix or backport timeline?