| Previous | Next |
| RPC_E_ACCESS_DENIED | RPC_E_INVALID_OBJREF |
RPC_E_REMOTE_DISABLED
Remote COM calls are disabled for the process
RPC_E_REMOTE_DISABLED is HRESULT 2147549468 (0x8001011C) from winerror.h. AllStat describes it as “Remote calls are not allowed for this process.” In the COM/RPC call control, message filtering, apartment routing, marshaling, security negotiation, or remote object lifetime, the code identifies a specific failure boundary and should not be replaced by a generic COM exception.
A generic “operation failed” message is insufficient for this HRESULT because the recovery decision depends on the exact lifecycle, security, marshaling, or state condition.
Decisive interpretation boundary
Before choosing recovery, verify that the caller location, server process policy, activation mode, firewall, and DCOM configuration show that remote access is intentionally disabled. Validate this condition for this HRESULT using the owning API state, not an inferred UI symptom.
Also confirm that all observed objects, tokens, buffers, proxies, metadata files, or ACLs belong to the current operation generation and were not retained from an earlier attempt.
Where it is encountered
- Cross-apartment or cross-process COM method invocation and activation. Record the interface, method, component version, thread, apartment, process, and correlation ID.
- STA message filtering, reentrancy, call cancellation, timeout, or retry handling.
- DCOM security initialization, proxy/stub marshaling, OBJREF processing, and server object lifetime.
The immediate focus for this HRESULT is process or platform policy that prohibits remote calls even though local COM use may remain available. Keep this result attached to that operation; the same numeric severity outside the owning API does not supply enough context.
Correct handling and recovery
Use a supported local boundary, explicitly enable remote COM where security policy permits, or redesign through a service API. Do not treat it as transient network loss.
Repeat the operation after it only when the documented precondition, identity, apartment, object generation, buffer, or configuration has changed.
Difference from nearby HRESULTs
It is an explicit remote-call prohibition; RPC_E_ACCESS_DENIED is an authorization decision for a particular caller.
The distinction around it should be represented explicitly in control flow and operational dashboards.
Lifetime, retry, and cleanup rules
After it, determine whether the current object, interface pointer, call context, token, stream, metadata reader, asynchronous operation, or access-control instance remains valid. Release only resources owned by the failing attempt, cancel callbacks through their documented mechanism, and avoid double close, double commit, repeated activation, or replay of a non-idempotent remote method.
The retry policy for this HRESULT should state the trigger, maximum attempts, cancellation owner, and reconciliation step for effects that may have completed elsewhere.
Developer and administrator guidance
When it crosses native, managed, scripting, RPC, or WinRT projection boundaries, preserve the unsigned 32-bit HRESULT. Unit tests for this HRESULT should assert the code-specific postcondition and resource ownership, not merely that an exception was thrown.
Document the owner of the boundary so future occurrences can be correlated across client, proxy, server, package, and security logs. Define who owns retry, cancellation, cleanup, policy changes, package repair, and user-facing messaging for this HRESULT.
Practical scenario
A management tool moves from local execution to another host and receives this code. The product exposes a documented HTTPS management endpoint instead of weakening DCOM policy.
A regression test should reproduce it, assert the raw HRESULT and all relevant outputs, then correct only the decisive condition and verify the intended success or neighboring failure result.
References
- Microsoft: COM RPC error codes
- Microsoft: IMessageFilter
- Microsoft: RetryRejectedCall
- Microsoft: CoInitialize
- Microsoft: CoInitializeSecurity
- Microsoft: marshaling rules
- Microsoft: HRESULT values
Looking for a different code? Search another status or error code.
