Match “Account Unknown” Profiles to LocalPath/SID (ProfileList Registry)
Windows stores the authoritative mapping between a user profile folder (C:\Users\…) and the profile SID
in the registry under ProfileList. This method is ideal when the UI shows Account Unknown and you
need to identify the exact LocalPath ↔ SID pair for cleanup or troubleshooting.
Registry Location (Source of Truth)
The mapping is stored here:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
Step 1 — Dump SID ↔ ProfilePath Mapping (PowerShell)
Open PowerShell as Administrator and run the following to list each profile SID and its
ProfileImagePath (typically C:\Users\username):
Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" |
ForEach-Object {
$p = Get-ItemProperty $_.PsPath
[PSCustomObject]@{
SID = $_.PSChildName
ProfilePath = $p.ProfileImagePath
}
} |
Sort-Object ProfilePath |
Format-Table -AutoSize
Any entry that points to a profile folder you recognize (e.g., C:\Users\ws3.tavx) is the one Windows will
attempt to migrate during an upgrade.
Step 2 — Identify “Account Unknown” by SID Translation
If a SID cannot be translated into a username, Windows often shows it as Account Unknown.
Use this snippet to attempt to resolve each SID:
Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" |
ForEach-Object {
$p = Get-ItemProperty $_.PsPath
$sid = $_.PSChildName
try {
$user = (New-Object System.Security.Principal.SecurityIdentifier($sid)).
Translate([System.Security.Principal.NTAccount]).Value
} catch {
$user = "Account Unknown"
}
[PSCustomObject]@{
User = $user
SID = $sid
ProfilePath = $p.ProfileImagePath
}
} |
Sort-Object ProfilePath |
Format-Table -AutoSize
Now you can directly match what the User Profiles UI shows (including Account Unknown) to the
exact SID + profile path.
Step 3 — Spot Duplicate SIDs Pointing to One Profile Folder
If an upgrade fails with profile migration errors, look for multiple SIDs referencing the same ProfileImagePath.
This command shows duplicates by profile folder:
$items = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" |
ForEach-Object {
$p = Get-ItemProperty $_.PsPath
[PSCustomObject]@{
SID = $_.PSChildName
ProfilePath = $p.ProfileImagePath
}
}
$items | Group-Object ProfilePath |
Where-Object { $_.Count -gt 1 } |
ForEach-Object {
$_.Group | Select-Object ProfilePath, SID
} |
Format-Table -AutoSize
If you see the same ProfilePath listed more than once with different SIDs, that is a strong indicator of
a corrupted mapping and can block in-place upgrades until the affected profile is removed and recreated (after backing up data).
Practical Deletion Rule (Disk Cleanup + Safety)
Safe candidates to delete are profiles that meet all of the following:
- User resolves to Account Unknown (SID cannot be translated)
- Profile is not loaded (user is not logged in)
- Not a special/system profile (not Default/Public/system-managed)
- Not your current admin profile and not any account you still actively use
- Data is backed up if you are unsure
C:\Users\DefaultC:\Users\Public- Your currently logged-in profile (e.g.,
C:\Users\admin.tav) - Any profile with active business data you haven’t backed up
Next Step: Delete Profiles the Clean Way
For deletion, prefer the built-in profile management UI (it removes both the folder and registry mapping):
- Press Win + R → run
sysdm.cpl - Advanced tab → User Profiles → Settings
- Select the unwanted profile(s) → Delete
- Reboot