What does HRESULT 0x80110821 (COMADMIN_E_PRIVATE_ACCESSDENIED) mean?

 
Previous Next
COMADMIN_E_CANNOT_ALIAS_EVENTCLASS COMADMIN_E_SAFERINVALID

COMADMIN_E_PRIVATE_ACCESSDENIED

COMADMIN_E_PRIVATE_ACCESSDENIED is the failure HRESULT 0x80110821 (signed decimal -2146367455, unsigned decimal 2148599841). Its severity bit is 1, facility is 17 (FACILITY_ITF), and the facility-specific code field is 0x0821.

Activation boundary of a private COM+ component: exact meaning of COMADMIN_E_PRIVATE_ACCESSDENIED

The class is marked as a private component and the activation request came from outside the allowed same-application context. Private components are intended as internal helpers, not generally activatable public classes.

AllStat records the Windows SDK description as “Access is denied because the component is private.”

Typical cause branches

  • an external client directly activates a helper CLSID marked private.
  • a component was moved to another application but callers were not updated.
  • an application proxy or remote client exposes a class that should remain internal.
  • a refactor changed application boundaries while keeping old activation code.

Where COMADMIN_E_PRIVATE_ACCESSDENIED occurs

The code appears during activation/access evaluation after COM+ locates the class and reads its private-component metadata. It is not a missing CLSID or generic partition-administration denial.

Evidence to collect before changing the catalog

  • requested CLSID, caller process/component/AppID, callee AppID, and partition.
  • IsPrivateComponent catalog value and recent component moves/copies.
  • activation path—direct CoCreateInstance, proxy, queued call, or same-application internal call.
  • COM+ security/activation events and intended dependency architecture.

Diagnostic sequence for COMADMIN_E_PRIVATE_ACCESSDENIED

  • confirm the class is intentionally private and identify its supported in-application callers.
  • trace the external activation site and why it bypasses the public component interface.
  • route the operation through a public façade component in the same application.
  • move related components together only when that preserves security and transaction design.
  • change privacy only after a deliberate exposure/security review.

Difference from nearby COMADMIN results

COMADMIN_E_PARTITION_ACCESSDENIED protects a partition administration/activation boundary; COMADMIN_E_COMP_MOVE_PRIVATE prevents invalid relocation of a private component. This code is the actual private-class access denial.

Retry and recovery

Retry under the same external activation path remains denied. The caller must use an allowed application boundary or the component design must change.

What this HRESULT does not establish

The HRESULT does not imply a Windows ACL failure and should not be “fixed” by granting registry or filesystem rights.

Practical administration scenario

A web application directly creates an internal worker CLSID after the worker was marked private; calls through the public service component still work.

Developer and operations guidance

Record caller/callee AppIDs, CLSID, partition, activation mechanism, privacy flag, process identities, and the supported public entry point that should have been used.

Official Microsoft references for COMADMIN_E_PRIVATE_ACCESSDENIED


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