What does Windows error code 994 (ERROR_EA_ACCESS_DENIED) mean?

 
Previous Next
ERROR_ENCLAVE_VIOLATION ERROR_OPERATION_ABORTED

ERROR_EA_ACCESS_DENIED

access to the extended attribute was denied.

ERROR_EA_ACCESS_DENIED means that windows rejected access to an extended attribute associated with a file or directory. In this case, the decisive context is code reading or updating NTFS extended attributes through native file APIs, together with full path and whether it is local, removable, redirected, or network-backed.

Where the result appears

  • code reading or updating NTFS extended attributes through native file APIs.
  • file-copy, backup, restore, migration, or compatibility tools that preserve metadata.
  • security software inspecting metadata attached to filesystem objects.
  • cross-platform software translating OS/2-style extended attributes or application metadata.

Typical causes

  • the caller lacks the rights required to read or modify the target object or its metadata.
  • the object is protected by an ACL, integrity level, policy, or security product.
  • the file was opened without access compatible with the requested metadata operation.
  • the attribute operation crosses a filesystem or redirector boundary that applies stricter rules.

Evidence to collect

  • full path and whether it is local, removable, redirected, or network-backed.
  • requested access mask, share mode, impersonation identity, and effective token.
  • the exact API and whether the failure occurred during query, create, replace, or delete.
  • filesystem type, security descriptor, integrity level, and relevant audit events.

For this condition, begin the investigation with full path and whether it is local, removable, redirected, or network-backed. Correlate it with requested access mask, share mode, impersonation identity, and effective token and check whether the caller lacks the rights required to read or modify the target object or its metadata. Capture the original this result immediately after the failing call so later cleanup does not replace the thread-local error value.

Handling and recovery

Treat the result as an authorization or open-mode problem rather than as proof that the file data itself is unreadable. Reopen the object with the least additional access actually required, or omit nonessential metadata preservation when the product specification permits it. Do not silently elevate privileges merely to copy an attribute.

Any retry policy for it should be tied to evidence that the object is protected by an ACL, integrity level, policy, or security product has changed. Before another attempt, verify the exact API and whether the failure occurred during query, create, replace, or delete. If the attribute operation crosses a filesystem or redirector boundary that applies stricter rules still applies, stop the retry sequence and preserve the first diagnostic event.

Common misinterpretation

It is not equivalent to a general file-open denial. The primary data stream may remain accessible while the extended-attribute operation is refused.

Guidance for developers

When surfacing this result through another layer, retain its Win32 domain, numeric value, and the operation described by file-copy, backup, restore, migration, or compatibility tools that preserve metadata. A useful telemetry record also includes filesystem type, security descriptor, integrity level, and relevant audit events. For windows-related handling, decisions must use the numeric value and documented API contract rather than localized wording.

A focused test should reproduce the condition in which the file was opened without access compatible with the requested metadata operation, assert this result, and confirm that the program releases resources associated with security software inspecting metadata attached to filesystem objects. The recovery test should also verify that full path and whether it is local, removable, redirected, or network-backed is refreshed before the operation resumes.

References


Looking for a different code? Search another status or error code.