HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows Hello for Business WHfBdsregcmdPRTReferenceTroubleshootingEntra ID

dsregcmd /status Decoded: The Complete Field Reference for WHfB and PRT

IA
Imran Awan
31 July 2026

If you troubleshoot Windows Hello for Business (WHfB), Entra join, or on-premises single sign-on, one command answers more questions than any portal: dsregcmd /status. The problem is that its output is a wall of sixty-plus fields across seven sections with almost no explanation, and most admins read only the three lines they already recognise. This is the complete field-by-field reference - every section, every line, the registry keys the values actually come from, the services and scheduled tasks that keep the whole thing running, and which Event IDs to check when a field looks wrong - so you can read the whole picture instead of guessing at it.

▶ Watch: dsregcmd /status Explained
Note: Run dsregcmd /status as the signed-in user, not elevated. Several of the most useful fields - NgcSet, AzureAdPrt, OnPremTgt - only populate in the user context. Run it from an elevated prompt and those read blank or wrong, which sends you chasing problems that are not there.

The problem: sixty-plus fields and no legend

Most admins read only the three lines of dsregcmd /status they already recognise and guess at the rest. That is how a device with a clear answer in front of you still takes an hour to diagnose - the information is there, unlabelled, spread across seven sections most people have never scrolled past.

Why it happens: the output spans seven sections with no explanation

The command dumps Device State, Device Details, Tenant Details, User State, SSO State, Diagnostic Data and (conditionally) the NGC Prerequisite Check back to back, with no descriptions. Each section answers a different question, the fields you need for Windows Hello for Business (WHfB) are scattered across four of them, and the values themselves are read live from a handful of registry keys and populated by services most admins have never had a reason to look at.

How to verify: run it in the user context first

Run dsregcmd /status as the signed-in user, not elevated - NgcSet, AzureAdPrt and OnPremTgt only populate in the user context. From an elevated prompt they read blank and send you chasing problems that do not exist.

The fix: read it section by section

Section 1 - Device State: what kind of join is this?

The top block answers "how is this device registered?" Three booleans combine into the join type, and this truth table is worth memorising because half of all WHfB questions start with getting the join type right:

AzureAdJoinedEnterpriseJoinedDomainJoined= Device state
YESNONOMicrosoft Entra joined
NONOYESDomain joined (on-prem only)
YESNOYESMicrosoft Entra hybrid joined
NOYESYESOn-premises DRS joined
Command Prompt — Device State
AzureAdJoined : YES EnterpriseJoined : NO DomainJoined : YES # AAD=YES + Domain=YES = hybrid joined DomainName : CONTOSO Virtual Desktop : NOT SET # AVD/W365 host would say "AVD" or "W365" here Device Name : DESKTOP-A1B2C3.contoso.com

Note: the Microsoft Entra registered (Workplace Joined) state is not shown here - it appears in the User State section under WorkplaceJoined.

Section 2 - Device Details: the device identity and its key

Shown only for Entra joined / hybrid joined devices. This whole block is a live read of the device's certificate, stored in HKLM:\SYSTEM\CurrentControlSet\Control\CloudDomainJoin\JoinInfo\<thumbprint> - more on that registry key below.

Command Prompt — Device Details
DeviceId : aaaaaaaa-0b0b-1c1c-2d2d-333333333333 Thumbprint : 82ACAA421F698EFA37C0DA5E4C5645712B71F7F0 DeviceCertificateValidity : [ 2024-10-17 09:10:48.000 UTC -- 2034-10-17 09:40:48.000 UTC ] KeyContainerId : e8a1675a-7510-45e0-8603-86047175cf62 KeyProvider : Microsoft Platform Crypto Provider # TPM-backed TpmProtected : YES DeviceAuthStatus : SUCCESS

Section 3 - Tenant Details: the endpoints this device is actually talking to

This section is almost always skipped, but it is where connectivity and Cloud Kerberos Trust questions get answered. Every URL here is a real endpoint the device calls during join, key registration, or Kerberos ticket requests - if one of these is unreachable through a proxy or firewall, that specific function breaks silently.

Command Prompt — Tenant Details
TenantName : Contoso Ltd. TenantId : aaaaaaaa-0b0b-1c1c-2d2d-333333333333 AuthCodeUrl : https://login.microsoftonline.com/<TenantId>/oauth2/authorize AccessTokenUrl : https://login.microsoftonline.com/<TenantId>/oauth2/token MdmUrl : https://enrollment.manage.microsoft.com/enrollmentserver/discovery.svc JoinSrvVersion : 2.0 JoinSrvUrl : https://enterpriseregistration.windows.net/EnrollmentServer/device/ KeySrvVersion : 1.0 KeySrvUrl : https://enterpriseregistration.windows.net/EnrollmentServer/key/ WebAuthNSrvVersion : 1.0 WebAuthNSrvUrl : https://enterpriseregistration.windows.net/webauthn/<TenantId>/ KerbSpn : adrs/enterpriseregistration.windows.net KerbUrl : https://login.microsoftonline.com/<TenantId>/kerberos JoinResourceSrvTlsUrl : https://certauth.enterpriseregistration.windows.net/EnrollmentServer/device/resource/<TenantId>/

Section 4 - User State: is there a Hello credential?

This is the WHfB heart of the output. Run in the user context, it tells you whether Hello is set up, how it can be reset, and which account is brokering sign-in:

Command Prompt — User State
NgcSet : YES # a Hello key exists for this user NgcKeyId : {B4D23F4E-294F-4333-9E42-7BDE0EB76D92} # its key ID - matches the folder under Ngc CanReset : DestructiveAndNonDestructive # non-destructive PIN reset is live WorkplaceJoined : NO WamDefaultSet : YES WamDefaultAuthority : organizations WamDefaultId : https://login.microsoft.com WamDefaultGUID : {B16898C6-A148-4967-9171-64D755DA8520} (AzureAd)

Section 5 - SSO State: the tokens that make SSO work

The single-sign-on block, also user-context. These are the fields you read when "cloud works, on-prem prompts" (or vice versa):

Command Prompt — SSO State
AzureAdPrt : YES # cloud PRT present (SSO to M365/Entra apps) AzureAdPrtUpdateTime : 2026-08-05 11:51:21.000 UTC # last time the PRT was refreshed AzureAdPrtExpiryTime : 2026-08-20 11:00:48.000 UTC # when it expires if not renewed AzureAdPrtAuthority : https://login.microsoftonline.com/<TenantId> EnterprisePrt : NO # PRT from on-prem AD FS (hybrid can have both) OnPremTgt : YES # cloud Kerberos ticket for ON-PREM resources CloudTgt : YES # cloud Kerberos ticket for CLOUD resources KerbTopLevelNames : .windows.net,.windows.net:1433,.azure.net,.azure.net:1433
Gotcha: Before Windows 11 version 23H2, the on-prem ticket field in the NGC Prerequisite Check section was named CloudTGT; from 23H2 it is OnPremTGT. If you are reading older runbooks or comparing across OS versions, that rename trips people up - they are the same thing.

Section 6 - Diagnostic Data: the fields nobody reads

The last section before the (conditional) NGC Prerequisite Check, and the one most consistently skipped - but KeySignTest alone is worth the scroll:

Command Prompt — Diagnostic Data
AadRecoveryEnabled : NO Executing Account Name : CONTOSO\jsmith, jsmith@contoso.com KeySignTest : PASSED # TPM key-signing self-test DisplayNameUpdated : Managed by MDM OsVersionUpdated : Managed by MDM HostNameUpdated : YES Last HostName Update : NONE

Section 7 - NGC Prerequisite Check: why Hello did (not) provision

This section only appears when Hello has not yet successfully provisioned - which makes it the single most useful block for "why isn't the user getting a PIN prompt?" Each line is a prerequisite, and the first NO is your answer:

Command Prompt — Ngc Prerequisite Check
IsDeviceJoined : YES IsUserAzureAD : YES PolicyEnabled : YES # is the WHfB policy on? Reads PassportForWorkEnabled PostLogonEnabled : YES # native post-login provisioning? Reads DisablePostLogonProvisioning DeviceEligible : YES # meets hardware (TPM) requirement? SessionIsNotRemote : YES # not an RDP session (Hello won't provision over RDP) PreReqResult : WillProvision

The fields decode cleanly: IsDeviceJoined, IsUserAzureAD, PolicyEnabled, PostLogonEnabled (NO here means a custom mechanism, not the platform, triggers enrolment), DeviceEligible (fails when there is no usable TPM and you require one), SessionIsNotRemote (Hello does not provision inside an RDP session), and PreReqResult - WillProvision means Hello enrolment will fire as a post-login task at next sign-in.

Watch out: SessionIsNotRemote : NO is the answer to a very common false alarm. Hello will not provision inside a Remote Desktop session - so an admin testing WHfB over RDP will see it "fail" every time. Test provisioning at the physical console, not through RDP.

Section 8 - Registry keys behind the numbers

Almost every field above is a live read of one of three registry locations. Knowing these turns dsregcmd from a black box into something you can cross-check directly:

PowerShell — the device join registry key (real value names, redacted values)
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\CloudDomainJoin\JoinInfo\<Thumbprint>' IdpDomain : login.windows.net TenantId : aaaaaaaa-0b0b-... UserEmail : jsmith@contoso.com AttestationLevel : 0 AikCertStatus : 0 TransportKeyStatus : 3 DeviceDisplayName : DESKTOP-A1B2C3 OsVersion : 10.0.22631.4169 DdidUpToDate : 0 DnsFullyQualifiedName : DESKTOP-A1B2C3.contoso.com LastSyncTime : 1729158045

Section 9 - Services and scheduled tasks in play

None of the above updates itself. A handful of services and two background scheduled tasks are what keep dsregcmd's numbers current:

ComponentWhat it does hereSymptom if stopped/disabled
KeyIso (CNG Key Isolation)Isolates the Hello private key operation from LSASS - this is the service actually performing the sign in KeySignTestKeySignTest : FAILED, PIN prompts silently fail
TokenBroker (Web Account Manager)Brokers the PRT to apps - what backs the whole WamDefault* blockAzureAdPrt : YES but apps still prompt for credentials
CryptSvc (Cryptographic Services)Certificate store operations behind the device cert in Device DetailsDevice cert enrollment/renewal failures, DeviceAuthStatus : FAILED
NetlogonOn-prem secure channel - required for Key Trust's on-prem TGT exchange (not needed for Cloud Kerberos Trust)OnPremTgt : NO on a hybrid Key Trust device with cloud SSO otherwise healthy
PowerShell — real output, this series' test device
Get-Service KeyIso,TokenBroker,CryptSvc,Netlogon | Select Name,DisplayName,Status Name DisplayName Status ---- ----------- ------ CryptSvc Cryptographic Services Running KeyIso CNG Key Isolation Running Netlogon Netlogon Running TokenBroker Web Account Manager Running

Two scheduled tasks under Task Scheduler › Microsoft › Windows › Workplace Join do the periodic work: Automatic-Device-Join re-runs the join/re-registration check on a timer (this is what recovers a hybrid device after a missed sync, without a user ever running dsregcmd /join by hand), and Device-Sync keeps the on-prem and cloud device attributes aligned. A real capture from this series shows both Ready, and a third task, Recovery-Check, Disabled - that third one is normal to see disabled; it only activates once WHfB recovery (AadRecoveryEnabled in Diagnostic Data) is turned on for the tenant.

Section 10 - Correlating a field to the event log

Once a field above looks wrong, the event log tells you when it went wrong and why. The full catalog is in the WHfB Event ID catalog - here is the direct mapping from what you just read in dsregcmd to what to search for:

Field you're looking atLog to openEvent ID to search for
PreReqResult not WillProvisionUser Device Registration / Admin360 (Warning - the body names the failed prerequisite)
DeviceAuthStatus : FAILEDUser Device Registration / Admin362 (device auth to enterprise STS did not succeed)
NgcSet : NO after an expected provisioningUser Device Registration / Admin363 (the NGC/Passport key is missing)
AzureAdPrt : NO or an AcquirePrtDiagnostics blockdsregcmd's own diagnostics block first, then AAD / OperationalNo fixed ID - read the HRESULT in Attempt Status directly

Here is a real run of Get-DsRegCmdReport.ps1 from this series, which parses dsregcmd /status into exactly the fields this reference covers and flags anything worth a second look:

PowerShell — Get-DsRegCmdReport.ps1 (real output, DeviceId redacted)
dsregcmd /status - WHfB Report ------------------------------------------------------------ Join type : Microsoft Entra hybrid joined DeviceId : d32c0090-2252-... TpmProtected : YES DeviceAuthStatus : SUCCESS --- Windows Hello (User State) --- NgcSet : YES CanReset : DestructiveAndNonDestructive --- SSO State --- AzureAdPrt : YES EnterprisePrt : NO OnPremTgt : YES CloudTgt : YES ------------------------------------------------------------ No issues flagged - Hello, PRT and TGT look healthy.
Tip: Read dsregcmd /status top to bottom in order: join type → device key/TPM → tenant endpoints → NgcSet → PRT/TGT → diagnostic data → (if Hello is missing) the prerequisite check. Each section narrows the problem, and every field traces back to a registry key or a running service you can check directly instead of taking dsregcmd's word for it.

Proof it worked: you diagnose from the output, not a guess

You are reading it correctly when a single run turns "Hello is broken" into a specific answer - "hybrid joined, NgcSet YES, AzureAdPrt YES, OnPremTgt NO" points straight at the on-prem ticket exchange (check Netlogon and the on-prem AD key object, or the KerbSpn/KerbUrl endpoints if this is Cloud Kerberos Trust), and the NGC Prerequisite Check names the first failing prerequisite for you. Section by section, top to bottom, the output diagnoses itself - and every field traces back to a registry key, a service, or an event log entry you can independently confirm.

References

PowerShell Scripts — dsregcmd Report

Script for this post is in Daily-Tasks.

Get-DsRegCmdReport.ps1
— read-only: parses dsregcmd /status into a structured object and highlights the join type, Hello, PRT and TGT fields with plain-English verdicts
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows Hello for Business
Windows Hello for Business Not Working on a Hybrid-Joined Device…
WHfB signs in with a PIN but Event 360 keeps firing? This walkthrough traces the real…
Windows Hello for Business
The Complete Windows Hello for Business Event ID Catalog (Across…
WHfB logs to three different places with cryptic IDs and no index. This catalog maps…
Windows Hello for Business
Windows Hello Signs In Fine but File Shares Prompt: Fixing…
The user signs in with their PIN and cloud apps work, but a file share throws a…