Windows 11 Troubleshooting Guide: Error 678 – Registry Transaction State Already Exists
Why This Error Happens
Error 678 occurs when the Kernel Transaction Manager (KTM) detects that a previous transacted registry operation on a specific registry sub-tree was interrupted before it could fully commit or roll back. This typically happens due to an unexpected system shutdown, application crash, or power failure while a program was writing transacted registry changes (via functions like RegCreateKeyTransacted). Because the transaction log still contains an uncommitted-but-not-reverted entry, Windows flags the sub-tree as being in an ambiguous state until an administrator or the system resolves it.
Step-by-Step Resolution Guide
-
Identify the Affected Registry Sub-Tree
Open Event Viewer (eventvwr.msc) → navigate to Windows Logs > System, filter by Event ID 678, and note the registry key path listed in the event details. -
Back Up the Registry Before Making Changes
Openregedit.exe, right-click Computer at the top of the tree, select Export, and save a full backup (e.g.,C:\RegistryBackup\pre-fix.reg) in case rollback causes data loss. -
Resolve the Pending Transaction via Command Line
Open Command Prompt (Admin) and run the following to inspect and resolve pending KTM transactions:
fsutil resource info C:
This lists pending transactions on the resource manager. If a stale transaction is found tied to the registry hive in question, use:
fsutil transaction list
fsutil transaction rollback <transaction-guid>
Replace <transaction-guid> with the GUID identified from the list.
- Run System File Checker and CHKDSK
Since transaction log corruption often stems from disk-level issues, run:
sfc /scannow
chkdsk C: /f /r
Restart the machine when prompted to allow disk repairs to complete.
- Manually Commit or Discard the Registry Change (If Still Needed)
If the pending change is known and desired, re-run the original application/installer that initiated the transacted registry write so it can reattempt and properly commit the change. If the change is unwanted, delete the specific flagged key manually inregedit(using the path noted in Step 1) and let the application recreate it cleanly on next launch.
Alternative or Verification Steps
- Verify the Fix: Reopen Event Viewer and confirm Event ID 678 no longer appears for that registry path after triggering the application that originally caused it. Also confirm via
fsutil transaction listthat no pending transactions remain. - Alternative Fix: If the issue persists, use System Restore to roll back to a restore point created before the error occurred, which resets the registry transaction logs entirely.