Match “Account Unknown” Profiles to LocalPath/SID via ProfileList

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
Tip

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
Do NOT delete these

  • C:\Users\Default
  • C:\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):

  1. Press Win + R → run sysdm.cpl
  2. Advanced tab → User ProfilesSettings
  3. Select the unwanted profile(s) → Delete
  4. Reboot

Note: The ProfileList registry view is ideal for matching “Account Unknown” entries to their exact SIDs and
profile folders. Always back up any data you care about before deleting user profiles.