Quick answer
ERROR_TRANSACTIONAL_CONFLICT means a process tried to open, create, or enlist in an NTFS transactional resource using a name (or GUID) that's already held by another live transaction. You fix it by finding the process holding the name, ending it, and clearing the KTM transaction log for that resource manager.
What's actually happening
Windows Transactional NTFS (TxF) and the Kernel Transaction Manager (KTM) let a file operation roll back like a database commit. That's great for installers, backup agents, and a few legacy COM+ apps. The catch: KTM names are kernel-scoped. If two writers grab the same name at the same time, one of them wins and the other gets 0x00001A90.
I've seen this trip up two scenarios more than any other. First, two copies of the same installer running because a scheduled task fired while a user was double-clicking the EXE. Second, a backup product (Veeam, Backup Exec, or an old Arcserve agent) that leaves a transaction handle open after a crash, then the next run collides with the ghost. Antivirus minifilters that wrap TxF calls can do it too. Windows Defender usually behaves. Third-party endpoint tools often don't.
The error isn't a corruption flag. It's a scheduling collision. Nothing on disk is broken yet — and if you fix it fast, nothing will be.
Fix it step by step
1. Confirm who's holding the transaction
Open an elevated Command Prompt or PowerShell. You want to see every TxF-aware handle on the box. Sysinternals handle.exe is the fastest way.
handle.exe -a -u | findstr /i "transaction"
You'll get a list of PIDs and handle types. Anything showing Transaction or TmTx is a suspect. Note the PIDs.
2. Kill the duplicate or stale process
If two instances of the same app show up, kill the younger one — the older one already owns the name and it'll finish cleanly.
taskkill /PID 4312 /F
If you can identify the process by name:
taskkill /IM setup.exe /F
Don't kill something you don't recognize. Take the PID, run tasklist /svc /FI "PID eq 4312", and see which service owns it.
3. Clear the KTM log for that resource manager
Sometimes the process is gone but the transaction is still in the log waiting on recovery. On the affected volume:
fsutil resource info C:\
fsutil resource setautoreset true C:\
The second command forces the log to reset on next mount. That's the sledgehammer, but it's the right one for a stuck resource manager that won't recover on its own. Reboot after.
4. Reboot and retry
KTM state doesn't always clear without a restart. Reboot, then run your original operation again — once, not twice. If it fails the same way, move to the alternatives below.
If that doesn't stick
Check your minifilters
Run this and look at the altitude column:
fltmc instances
Third-party filters below 320000 are often the culprit for transaction name collisions because they open the file inside someone else's transaction. Disable the suspect filter temporarily:
fltmc detach C:\
If the error clears, update that filter's driver. Don't leave it detached — you'll lose the protection it provides.
Check the registry for a stale resource manager
KTM persists metadata under:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\KtmRm
If the Start value is 3 (manual) on a machine that needs TxF, set it to 2. This is rare outside domain controllers running distributed transactions, but it bites people who tweaked services for "performance."
Isolate the app if it's COM+
Component Services → My Computer → COM+ Applications → find your app → right-click → Properties → Activation tab. Set it to run in its own server process instead of pooling with everything else in dllhost.exe. This removes cross-app transaction name sharing entirely.
Prevention
Don't let two copies of a TxF-style installer or backup job run at once. If your scheduler doesn't have a single-instance lock, add one. Also audit third-party kernel filters every patch cycle — TxF compatibility is not something vendors test well. And on servers, keep KtmRm set to automatic. The service weighs almost nothing and skipping it trades a tiny bit of RAM for a class of errors that eats an afternoon.