HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows Update Windows UpdateGet-HotFixWUA APIComponent StoreCompliance ReportingCBSEnablement PackageWindows 11

Four sources disagree about your update history: which one can answer which question

IA
Imran Awan
23 August 2026

An auditor asks something trivial. Is the August cumulative update on this device, and when did it install?

You pick one of four ways to answer and close the ticket. Then somebody answers from a different source and gets a different date. Neither of you is wrong, and neither can explain the gap.

The short version

Four sources answer "what happened to this device" and none is a superset of the others. Get-HotFix reads Win32_QuickFixEngineering, documented as returning "only the updates supplied by Component Based Servicing (CBS)" - here, 4 rows. The WUA COM history (IUpdateSearcher::QueryHistory) returned 153 rows for the same machine, including 41 failed attempts at an update never installed - but zero rows for two of the four KBs Get-HotFix reports. The component store held 415 packages (199 Superseded / 121 Installed / 95 Staged), of which exactly one name contains a KB number. Settings is a UI over the WUA record, not a fifth source. Learn which question each answers, because the reflex fix - deleting SoftwareDistribution - destroys the only source that records failures.

The problem: four sources, four answers, one device

Everything below was measured read-only on one Windows 11 Enterprise machine, build 26200.9168, DisplayVersion 25H2, on 23 August 2026.

Windows PowerShell - four sources, one question
# The question from the auditor: is KB5121003 on this device, and when did it land? PS C:\> (Get-HotFix).Count 4 PS C:\> Get-HotFix -Id KB5121003 | Select HotFixID,Description,InstalledOn HotFixID Description InstalledOn -------- ----------- ----------- KB5121003 Security Update 8/20/2026 12:00:00 AM # Source 2: the WUA session history, via the COM API in wuapi.dll PS C:\> $s = (New-Object -ComObject Microsoft.Update.Session).CreateUpdateSearcher() PS C:\> $s.GetTotalHistoryCount() 153 PS C:\> $s.QueryHistory(0,153) | ? Title -match 5121003 | Select Date,Operation,ResultCode,Title Date Operation ResultCode Title ---- --------- ---------- ----- 8/19/2026 5:37:57 PM 1 2 2026-08 Security Update (KB5121003) (26200.9168) # Source 3: the component store. 415 packages. Search it for the KB: PS C:\> (Get-WindowsPackage -Online).Count 415 PS C:\> Get-WindowsPackage -Online | ? PackageName -match '5121003' PS C:\> # Nothing. Not one row. The store does not name packages by KB.

Three sources, three shapes of answer. Get-HotFix gave a date with no time. The WUA history gave a timestamp to the second, on a different day. The component store did not recognise the KB at all. None of that is an error - each is a correct answer to a question that is not quite the one that was asked.

Source 1
Get-HotFix
CBS updates that reached the Installed state. 4 rows.
Source 2
QueryHistory
Every install attempt the agent drove, success or failure. 153 events.
Source 3
Get-WindowsPackage
Components and versions with a state, not KBs. 415 rows.
Source 4
Settings history
A categorised UI over the WUA record.

The gap between four rows and 153 is the difference between "which CBS packages are installed" and "what did the agent try to do". Treat them as interchangeable and you are wrong both ways.

Context: there is a fifth record I am deliberately leaving out: CBS.log and the ETW traces under C:\Windows\Logs\WindowsUpdate\. Those are transaction logs, not inventories - they tell you how something happened, and they rotate. This article is about the four sources people paste into tickets as if they were equivalent statements of fact.

Why it happens: each source records a different event

Source 1: Get-HotFix only ever sees CBS

The Win32_QuickFixEngineering reference states it in one sentence: "This class returns only the updates supplied by Component Based Servicing (CBS). These updates are not listed in the registry. Updates supplied by Microsoft Windows Installer (MSI) or the Windows update site (https://update.microsoft.com) are not returned by Win32_QuickFixEngineering."

The Get-HotFix help repeats that paragraph verbatim in its Notes - stated twice, in the two places an admin looks, and still the most commonly ignored fact in Windows patch reporting.

What falls outside CBS on a normal corporate device? On mine the WUA history recorded all of these as installed, and not one appears in Get-HotFix: the .NET 8 runtime update KB5122104, PowerShell 7.6.5, the Malicious Software Removal Tool KB890830, Defender security intelligence KB2267602, and five vendor driver updates.

There is a stranger detail in the same class definition. The MOF maps HotFixID to a MappingStrings qualifier of Win32Registry|SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix - while the prose above says these updates "are not listed in the registry". Both are true, and the resolution is measurable.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
Value or subkeyMeaningWhat to look for
Hotfix (subkey)The legacy QFE location the Win32_QuickFixEngineering MOF still points atTest-Path returned False. The key does not exist - the CBS rows are synthesised by the provider, which is why the doc says they are not in the registry
CurrentBuildOS build, e.g. 26200The only reliable release discriminator. Always pair it with UBR
UBRUpdate Build Revision, e.g. 9168KB5121003 yields UBR 9168 on both 25H2 (26200) and 24H2 (26100). Testing UBR -ge 9168 without pinning CurrentBuild passes a 24H2 device against a 25H2 baseline
ProductNameEdition stringReads "Windows 10 Enterprise" on this Windows 11 device. Scripts keying on it fail silently

Source 2: the WUA history is a per-attempt event log in a database you have been told to delete

The COM entry point is IUpdateSearcher::QueryHistory(startIndex, count, retval), implemented in wuapi.dll. It returns an IUpdateHistoryEntryCollection documented as containing "matching event records on the computer in descending chronological order".

Read the companion method name carefully. GetTotalHistoryCount returns "the number of update events on the computer" - not updates. That one word is the whole behaviour: an update that retries forty-one times produces forty-one rows.

Not hypothetical. KB5074109 accounts for 41 of my 153 rows, every one orcFailed with 0x80240034, and there is no success row for it anywhere. It was never installed - a later cumulative update superseded it and the retries stopped.

The store behind all of this is C:\Windows\SoftwareDistribution\DataStore\DataStore.edb, 54.75 MB here, with a documented error family of its own: the WU_E_DS_* codes, 0x80248000 to 0x80248FFF. It is also the first thing every troubleshooting script deletes.

Source 3: the component store knows components, not KBs

Get-WindowsPackage -Online returned 415 rows, and the state split is what no other source exposes.

Windows PowerShell - the census each source reports
# Get-HotFix: the whole visible update history of this device PS C:\> Get-HotFix | Sort InstalledOn -Desc | Format-Table HotFixID,Description,InstalledOn HotFixID Description InstalledOn -------- ----------- ----------- KB5121003 Security Update 8/20/2026 12:00:00 AM KB5120708 Update 8/20/2026 12:00:00 AM KB5123304 Security Update 8/19/2026 12:00:00 AM KB5054156 Update 2/4/2026 12:00:00 AM # Four rows. KB5054156 - Description 'Update' - is the 25H2 enablement # package. It moved this device an entire release. # The component store on the same machine, same minute: PS C:\> Get-WindowsPackage -Online | Group PackageState | Select Name,Count Name Count ---- ----- Superseded 199 Installed 121 Staged 95 PS C:\> Get-WindowsPackage -Online | Group ReleaseType | Select Name,Count Name Count ---- ----- OnDemandPack 372 FeaturePack 20 LanguagePack 12 Update 5 SecurityUpdate 5 Foundation 1 # 415 package rows. How many carry a KB number in the name? PS C:\> (Get-WindowsPackage -Online | ? PackageName -match 'KB\d{6,7}').Count 1 PS C:\> Get-WindowsPackage -Online | ? PackageName -match 'KB\d{6,7}' | Select PackageState,ReleaseType,PackageName,InstallTime PackageState ReleaseType PackageName InstallTime ------------ ----------- ----------- ----------- Installed Update Package_for_KB5054156~31bf3856ad364e35~amd64~~26100.6717.1.4 2/4/2026 9:02:44 AM # One of 415. And note the version string: 26100 - a 24H2 number - on a # 26200 device. That is the shared-core enablement package, doing its job.

Only one of 415 names carries a KB number, and it is the enablement package. Everything else is named by component and version: the August servicing stack update is Package_for_ServicingStack_9156~31bf3856ad364e35~amd64~~26100.9156.1.0. No KB, even though Get-HotFix lists it as KB5123304.

So the store cannot answer "is KB X installed" by name. What it can answer, and nothing else can, is which component versions are present and in which of three states. The DISM API documents these as DismPackageFeatureState: DismStateStaged (2), DismStateInstalled (4), DismStateSuperseded (6), plus DismStateNotPresent (0), DismStateUninstallPending (1), DismStateRemoved (3), DismStateInstallPending (5) and DismStatePartiallyInstalled (7).

Those 95 Staged packages are why this source exists: the payload is on disk and CBS has not promoted it. Nothing else distinguishes "downloaded" from "running".

Gotcha: the most consequential change ever made to this device is the row that looks like nothing. Get-HotFix reports KB5054156 with Description = Update, installed 4 February 2026. Microsoft's KB describes it as a "small, quick-to-install 'master switch' that activates the Windows 11, version 25H2 features", because 24H2 and 25H2 "share a common core operating system with an identical set of system files" and the 25H2 features ship dormant inside the 24H2 monthly update. That one-word Description hides a whole release move. The store even names it Package_for_KB5054156~31bf3856ad364e35~amd64~~26100.6717.1.4 - a 26100 version number on a 26200 device, the shared core showing through. Any inventory that buckets by Description files an OS release change next to a font update.

Source 4: Settings is a view, not a record

Admins cite the Settings page as an independent authority. Microsoft's guidance describes the plumbing: "The Settings UI communicates with the Update Orchestrator service that in turn communicates with to Windows Update service."

So it is a client of the same agent, reading the same datastore, presented in categories. The documented UI error family is the giveaway: 0x80243001, 0x80243002 and 0x80243003 - the WU_E_INSTALLATION_RESULTS_* codes - all describe results that "couldn't be read from the registry". The UI has its own read path and its own ways to fail.

It inherits every limitation of source 2 and adds one: you cannot query, filter, export or join it. Use it to confirm what a user saw, never what a device did.

The binaries doing the work

FileVerified locationRole
wuapi.dllC:\Windows\System32\, version 1509.2607.1012.0"Windows Update Client API" - the COM surface implementing QueryHistory. Microsoft's reset procedure re-registers it by name
wuaueng.dllC:\Windows\System32\, version 1509.2607.1012.0"Windows Update Agent", the ServiceDll for wuauserv. Serviced separately from the OS, which is 10.0.26200.9168
CIMWin32.dllC:\Windows\System32\wbem\"WMI Win32 Provider" - implements Win32_QuickFixEngineering. The CBS-only limitation lives here
TiWorker.exeversioned WinSxS servicing-stack directory, not System32 or C:\Windows\servicing"Windows Modules Installer Worker" - does the staging and promotion behind the Setup events below

How to verify: read all four before you conclude anything

Here is the order I use. Every destructive option comes after every read-only one.

  1. Establish the release facts. CurrentBuild, UBR, DisplayVersion - a KB maps to different builds on different releases.
  2. Run Get-HotFix and treat it as a floor, not a total. MSI, Store, driver and Defender content is missing by design.
  3. Pull the full WUA history and count events, not updates. Group by Title first, or retries distort every number.
  4. Decode ResultCode and Operation with the documented enums, not by eye.
  5. Check ClientApplicationID before blaming Windows Update. Here, 43 of 153 events came from setup and Store installers.
  6. Find the datastore horizon. Compare DataStore.edb's CreationTime with the oldest history row. Anything earlier is invisible to sources 2 and 4, permanently.
  7. Take the component-store census. Your only view of Staged and Superseded.
  8. Only now read the Setup log for the KB in dispute. That turns four disagreeing numbers into one chronology.
Windows PowerShell - decoding 153 history events
PS C:\> $h = $s.QueryHistory(0, $s.GetTotalHistoryCount()) PS C:\> $h | Group ResultCode | Select Name,Count Name Count ---- ----- 2 99 # orcSucceeded 4 52 # orcFailed 5 2 # orcAborted PS C:\> $h | Group Operation | Select Name,Count Name Count ---- ----- 1 153 # uoInstallation. Every row. Zero uoUninstallation. PS C:\> $h | Group ClientApplicationID | Select Name,Count Name Count ---- ----- MoUpdateOrchestrator 105 Acquisition;setup-StartProductInstallWithOptionsAsync 41 Device Driver Retrieval Client 5 Acquisition;StoreInstaller-Codex Installer-StartProductInstallWithOptionsAsync 2 # Now the 52 failures. Group them by title: PS C:\> $h | ? ResultCode -ne 2 | Group Title | Sort Count -Desc | Select Count,Name -First 3 Count Name ----- ---- 41 2026-01 Security Update (KB5074109) (26200.7623) 5 2026-07 .NET 8.0.29 Security Update for x64 Client (KB5104032) 2 9PLM9XGG6VKS-OpenAI.Codex # KB5074109 failed 41 times with 0x80240034 = WU_E_DOWNLOAD_FAILED, and has # no success row at all. It was never installed. It was superseded instead. # 41 rows for one update. GetTotalHistoryCount counts EVENTS, not updates.

Two closed enums decode every row.

OperationResultCodeValueDocumented meaning
orcNotStarted0"The operation is not started."
orcInProgress1"The operation is in progress."
orcSucceeded2"The operation was completed successfully." 99 rows here
orcSucceededWithErrors3"The operation is complete, but one or more errors occurred during the operation. The results might be incomplete."
orcFailed4"The operation failed to complete." 52 rows here
orcAborted5"The operation is canceled." 2 rows here, both 0x8024000B

UpdateOperation has exactly two members: uoInstallation (1) and uoUninstallation (2). There is no third. All 153 rows here were uoInstallation, which answers a question people ask this API by mistake - the history shows an uninstall only if WUA performed it. A wusa /uninstall or a boot-time CBS rollback leaves no uoUninstallation row at all.

A third enum governs attribution, and trips people up constantly.

ServerSelectionValueDocumented meaning
ssDefault0The default server - the same as ssManagedServer if the computer has one
ssManagedServer1"Indicates the managed server, in an environment that uses Windows Server Update Services or a similar corporate update server"
ssWindowsUpdate2"Indicates the Windows Update service."
ssOthers3"Indicates some update service other than those listed previously. If the ServerSelection property ... is set to ssOthers, then the ServiceID property of the object contains the ID of the service."

Every history row here reported ServerSelection = 3. Read casually, ssOthers sounds alarming on a managed device. It is not. The documentation tells you what to do next: read ServiceID. The KB5121003 row carried 8b24b027-1dee-babb-9a95-3517dfb9c552.

ServiceIDName on this deviceNotes
7971f918-a847-4430-9279-4a52d1efe18dMicrosoft UpdateIsDefaultAUService = True
8b24b027-1dee-babb-9a95-3517dfb9c552DCat Flighting ProdMicrosoft: "feature updates are always delivered through the DCAT service". This carried the LCU row
855e8a7c-ecb4-4ca3-b045-1dfa50104289Windows Store (Prod)Microsoft's table calls this "Windows Store (DCat Prod)" - the on-device name differs
Watch out: the most destructive reflex in Windows Update troubleshooting is running Microsoft's own last-resort command first. That command is rd /s /q %systemroot%\SoftwareDistribution, and Microsoft prefixes it with the words "If all else fails". The manual procedure is more explicit still: renaming DataStore to DataStore.bak sits in step 4, and the doc says step 4 "should only be performed at this point in the troubleshooting if you can't resolve your Windows Update issues after following all steps but step 4." Both destroy DataStore.edb - and with it every failed attempt, every HResult, every ClientApplicationID, the whole basis for finding out why the update failed. My 52 failure rows, including the 41 that identified a permanently stuck KB, would have become zero. You would be left with a clean history, a still-broken device, and nothing to read.

The Setup log survives that reset, making it the one durable per-KB chronology on the machine. Microsoft publishes no event-ID catalog for the Microsoft-Windows-Servicing provider, so this table comes from the on-disk manifest and IDs observed live.

Event Viewer > Windows Logs > Setup (provider: Microsoft-Windows-Servicing)
Event IDMessage observedWhat it tells you
1"Initiating changes for package KB5121003. Current state is Absent. Target state is Staged. Client id: UpdateAgentLCU."A transition is starting. The state words name the ends; Client id names who asked - UpdateAgentLCU, so Windows Update drove it, not DISM or an admin
2"Package KB5121003 was successfully changed to the Staged state." / "... to the Installed state."The transition completed. Read the state word: Staged is not Installed. Only this source dates the two separately
4"A reboot is necessary before package KB5121003 can be changed to the Installed state."CBS has parked the package. Until a matching Event 2 for the Installed state appears, the update is on disk and not in effect - however cheerful the WUA history looks
Event Viewer - Setup log, provider Microsoft-Windows-Servicing, KB5121003
PS C:\> Get-WinEvent -LogName Setup | ? Message -match 5121003 | Select TimeCreated,Id,Message | Format-List 2026-08-19 18:26:05 Id 1 Initiating changes for package KB5121003. Current state is Absent. Target state is Staged. Client id: UpdateAgentLCU. 2026-08-19 18:30:53 Id 2 Package KB5121003 was successfully changed to the Staged state. 2026-08-19 18:31:09 Id 1 Initiating changes for package KB5121003. Current state is Staged. Target state is Installed. Client id: UpdateAgentLCU. 2026-08-19 18:37:47 Id 4 A reboot is necessary before package KB5121003 can be changed to the Installed state. 2026-08-20 09:14:13 Id 2 Package KB5121003 was successfully changed to the Installed state. # Read the last two lines together. CBS parked the package at 18:37:47 on the # 19th and did not finish it until 09:14:13 on the 20th - 14 hours 36 minutes # later, across a reboot. Ten seconds into that gap, at 18:37:57, the WUA # history wrote orcSucceeded. Both are telling the truth about different things.

That is the reconciliation. CBS moved KB5121003 from Absent to Staged on the 19th, began the promotion to Installed, hit the reboot boundary at 18:37:47, and finished at 09:14:13 the next morning. The WUA history recorded orcSucceeded ten seconds into that gap. Get-HotFix reports InstalledOn = 8/20/2026, agreeing with CBS.

So the "wrong" date was never wrong. The WUA history dated the agent's work; Get-HotFix dated the package reaching its final state; those two events were 14 hours 36 minutes apart.

The fix: match the source to the question

No script makes these four agree. The fix is to stop asking one source a question it cannot answer.

The question you were actually askedAuthoritative sourceWhy the others cannot answer it
"Is CBS update KB X installed and in effect right now?"Get-HotFixLists only what CBS finished installing. The WUA history says succeeded while CBS is still Staged; the store cannot resolve the KB by name
"Did this device ever try, and fail, to install KB X?"WUA QueryHistoryThe only source recording failures. A failed install leaves nothing in Get-HotFix or the store, and no trace after a SoftwareDistribution reset
"Is a payload staged and waiting for a reboot?"Get-WindowsPackage + Setup Event 4Nothing else exposes the Staged state - 95 of my 415 packages
"When exactly did the state change, and who asked for it?"Setup log, Microsoft-Windows-ServicingOnly source with per-transition timestamps and a Client id. Survives a reset
"Was a non-CBS thing installed - .NET runtime, Store app, driver, Defender platform?"WUA QueryHistoryGet-HotFix excludes all of them by documented design
"What release is this device on?"CurrentBuild + DisplayVersionThe enablement package that moved the release shows as a plain "Update"
"Which superseded versions are still on disk?"Get-WindowsPackageOnly source with the Superseded state - 199 of 415

Why a rolled-back update reads as succeeded-then-absent

An orcSucceeded row records that the install operation completed. The enum's own preamble says so: OperationResultCode "Defines the possible results of a download, install, uninstall, or verification operation on an update". The operation, not the end state.

For a CBS update the operation finishes when the package is staged and the promotion queued. The rest happens at reboot, outside that operation, and Microsoft documents that phase separately in the update-handler family: 0x80242014 WU_E_UH_POSTREBOOTSTILLPENDING ("The post-reboot operation for the update is still in progress"), 0x80242015 WU_E_UH_POSTREBOOTRESULTUNKNOWN and 0x80242016 WU_E_UH_POSTREBOOTUNEXPECTEDSTATE. There is even a documented success code that says the job is not done: 0x00240005 WU_S_REBOOT_REQUIRED, "The system must be restarted to complete installation of the update."

So if the boot-time promotion fails and CBS reverses it, you get my timeline with a different ending: a permanent orcSucceeded row dated the 19th, no Get-HotFix entry, the package back to Absent in the store, and a Setup log showing the transition attempted and undone. Succeeded, then absent. Both records correct.

Critically, IUpdateHistoryEntry exposes no reboot-required property. Its members are ClientApplicationID, Date, Description, HResult, Operation, ResultCode, ServerSelection, ServiceID, SupportUrl, Title, UninstallationNotes, UninstallationSteps, UnmappedResultCode and UpdateIdentity, with Categories added by IUpdateHistoryEntry2. Nothing there separates a final success from a provisional one. You have to go to the Setup log.

Tip: if you are building a real reconciliation report, do not join on the KB number. 56 of my 153 history rows contain no KB in the title at all - drivers, PowerShell, Store apps - and only 1 of 415 package names contains one. Join on UpdateIdentity.UpdateID plus RevisionNumber, which is what the API actually keys on. KB5121003 came back as 800d68a0-03d1-47a4-92f3-1feb02f141aa revision 1. Carry the KB alongside as a label for humans, not as the primary key.

And do not treat orcFailed as evidence of a broken device. Microsoft's guidance on transient load-shedding states that callers "would get orcFailed or orcSucceededWithErrors" and that "Retrying the operation later is expected to succeed". A single failed row means nothing. Forty-one identical failed rows with no success row, as with KB5074109, means something specific - and you see it only because the history keeps every attempt.

Proof it worked: the reconciliation on a real device

You understand these four sources when you can predict what each will say before you run it. Here is the final pass.

Windows PowerShell - reconciliation, and the horizon that hides the eKB
# Timezone context, because two of the four sources disagree about it PS C:\> Get-TimeZone | Select Id,BaseUtcOffset Id BaseUtcOffset -- ------------- GMT Standard Time 00:00:00 # DST active in August, so local = UTC+1 PS C:\> $h | ? Title -match 5121003 | % { $_.Date; $_.Date.Kind } 19 August 2026 17:37:57 Unspecified # no Kind. The API will not tell you which clock this is. # Setup log for the same package said 18:37:47 local. Exactly one hour apart. # QueryHistory returns UTC; the event log renders local. Nothing is broken. # Now ask each source about the four KBs Get-HotFix reports: PS C:\> 5121003,5120708,5123304,5054156 | % { "KB$_ : " + @($h | ? Title -match $_).Count + ' WUA history rows' } KB5121003 : 1 WUA history rows KB5120708 : 1 WUA history rows KB5123304 : 0 WUA history rows # the SSU - shipped inside the LCU KB5054156 : 0 WUA history rows # the enablement package - before the horizon # Why zero? Find the horizon: PS C:\> (Get-Item C:\Windows\SoftwareDistribution\DataStore\DataStore.edb).CreationTime 17 February 2026 12:16:02 PS C:\> ($h | Select -Last 1).Date 18 February 2026 11:22:24 # The oldest history event postdates the datastore by 23 hours. KB5054156 # installed on 4 February. The record of it was never in this file. # Finally, the documented bounds - verified, not assumed: PS C:\> $s.QueryHistory(0,0) Exception from HRESULT: 0x80240007 # WU_E_INVALIDINDEX, as documented PS C:\> $s.QueryHistory(-1,5) Exception from HRESULT: 0x80240007 # same PS C:\> $s.QueryHistory(0,100000).Count 153 # over-asking is safe: no error, just the total

First, the timezone. QueryHistory returned Kind = Unspecified - the API declines to say which clock it used, and the get_Date documentation says only "Gets the date and the time an update was applied". Measured against the Setup log for the same package it is one hour behind local time, on a device in GMT Standard Time during summer time. That is UTC. If you have ever seen a report where the WUA date is an hour or a day off the event log, this is why.

Second, the horizon. DataStore.edb was created on 17 February 2026 at 12:16:02; the oldest surviving history event is 18 February at 11:22:24. The enablement package that took this device to 25H2 installed on 4 February, two weeks before that file existed. Get-HotFix still reports it, because CBS state is not kept in the datastore. The WUA history reports nothing, and never will.

Third, the bounds. The documented remark on QueryHistory is that it "returns WU_E_INVALIDINDEX if the startIndex parameter is less than 0 (zero) or if the Count parameter is less than or equal to 0 (zero)". Both cases raised 0x80240007 exactly as written, and asking for 100,000 rows when 153 exist returned 153 with no error - so the safe idiom really is QueryHistory(0, GetTotalHistoryCount()).

Nothing was fixed here, and nothing needed to be. Four numbers that looked contradictory - 4, 153, 415, and a one-day date gap - now have a single explanation, and every one can be defended to an auditor. That is what a diagnosis is.

References

Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows Update
The KB installed fine and is still being offered: supersedence,…
One 25H2 device held 199 Superseded, 121 Installed and 95 Staged packages while…
Windows Update
Get-HotFix is lying to your patch report: it only sees CBS…
Get-HotFix returned 4 rows on a device tracking 415 servicing packages. Microsoft…
Windows Update
Error 0x800f081f is not a verdict: find the missing payload in…
CBS_E_SOURCE_MISSING means servicing wanted a payload and could not find it - not that…