Quick answer for the impatient
Run dfsutil /purgereferrals in an elevated command prompt, then restart the service or app that triggered the error. If that doesn't clear it, check the target path for broken junction points or symlinks and recreate them.
What's actually happening here
Windows throws 0xC000009B (STATUS_DFS_EXIT_PATH_FOUND) when a program tries to open a path that's a DFS (Distributed File System) referral or exit point, but the request is being treated as a standard file open. The NTFS driver or the DFS client gets confused because the path looks like a regular directory, but it's actually a link pointing to a different server or share. The error name literally says it: the system found a DFS exit path control file, but the caller didn't expect it.
You'll most often see this in two scenarios. First, on a Windows Server or domain-joined client where an application (like a backup agent or a file watcher) recursively scans a DFS namespace and tries to open every object as if it were a local file. Second, on a developer machine where a project references a path that used to be a DFS link but the link now points to a stale or unreachable target — maybe the DFS namespace was reorganized after a server migration.
The trick is that this isn't a typical permission or disk-full error. Your drive is fine. The problem is that the path is "special" — it's an NTFS reparse point with a DFS-specific tag — and the application didn't handle it. So the fixes below focus on either refreshing the DFS referral cache or removing the reparse point that's causing the confusion.
Fix steps (try these in order)
Step 1: Purge the DFS referral cache
The DFS client caches referrals for a default 300 seconds. If the target server changed or the namespace was modified, the cache might hold a dead pointer. Clearing it forces a fresh lookup.
- Open an elevated command prompt (Win+X, then select "Terminal (Admin)" or "Command Prompt (Admin)").
- Run
dfsutil /purgereferrals - Restart the application that showed the error. If it's a system service, restart that service from the Services console.
This works about half the time. The reason? The exit path might have been valid when the cache was populated, but the target is now unreachable. Purging forces a new referral, and if the DFS namespace is healthy, the new referral points to a live target.
Step 2: Verify the DFS namespace and target share
If purging didn't help, the referral itself might be broken. On a machine that can access the DFS namespace, run:
dfsutil /client /listand
dfsutil /path:<your\dfs\path> /server:<your\dfs\root>Replacing the placeholders with your actual paths. This shows you the target servers and shares. If the target is offline or the share name is wrong, that's your culprit. Fix the DFS link on the namespace server using the DFS Management console or the New-DfsnFolderTarget PowerShell cmdlet.
I've seen this error on a file server where a DFS link pointed to a share that had been renamed. The namespace still listed the old share name, so every access attempt hit a dead end — and the app didn't handle the referral gracefully.
Step 3: Check for broken symlinks or junction points
On a local drive, 0xC000009B can appear if a symlink or junction point points to a DFS path. For example, you might have a folder like C:\Projects\Shared that's a junction to \\domain\dfs\Projects. If the DFS path is temporarily unavailable, any operation that tries to follow that link can throw this error.
Find all reparse points on your drive with:
dir /AL /S C:\Look for lines that display <JUNCTION> or <SYMLINK>. For each one, check the target with:
fsutil reparsepoint query "C:\path\to\link"If the target is a DFS path that no longer exists, delete the link and recreate it with the correct target:
rmdir "C:\path\to\brokenlink"then
mklink /J "C:\path\to\link" "\\new\target\path"If the main fixes don't work
Alternative 1: Disable the DFS client for the specific share
If the application doesn't need DFS features (like site awareness or failover), you can bypass DFS resolution entirely by using the direct UNC path to the target server instead of the DFS namespace path. For instance, replace \\domain\dfs\Projects with \\server\Projects. Test if that clears the error. It's not a real fix, but it's a solid workaround for legacy apps that can't handle reparse points.
Alternative 2: Update the application or its file scanning logic
Some backup tools and indexing services have a setting to "follow reparse points" or "skip DFS links." Turn that off. If the app is custom code, make sure it checks file attributes for FILE_ATTRIBUTE_REPARSE_POINT and skips those entries unless it explicitly wants to follow the link. The reason the error occurs is that the app called CreateFile without the FILE_FLAG_OPEN_REPARSE_POINT flag, so the kernel treats the reparse point as a directory to traverse, not a link to open.
Alternative 3: Reboot the machine
Sounds dumb, but a reboot clears all cached file handles and DFS state. If the error only appears after a long uptime, it's probably a stale handle in a service. A reboot is faster than hunting down every handle.
Prevention tip
Don't let applications scan DFS roots blindly. If you control the backup or monitoring schedules, exclude DFS links from recursive scans or schedule scans through the DFS namespace itself using the dfsutil client-side caching. Also, when you decommission a server, remember to remove its DFS folder targets before you shut it down. A dead target is the most common root cause I've seen for this error in production.
One more thing: keep your DFS referral cache time reasonable. Default is 300 seconds, but if you change targets often, set it lower with dfsutil /client /cachetime:60. It reduces the window where clients hold stale referrals.