| Previous | Next |
| ERROR_APP_WRONG_OS | ERROR_RMODE_APP |
ERROR_SINGLE_INSTANCE_APP
Cannot start more than one instance of the specified program.
ERROR_SINGLE_INSTANCE_APP has decimal value 1152 (0x480). It indicates that the selected program is limited to one running instance and another instance already satisfies that ownership condition. This historical Win32 result should be interpreted using the application’s actual single-instance mechanism, session model, and activation behavior.
Where it can be encountered
- a desktop application or legacy executable that explicitly permits only one instance
- a shell launch that discovers an existing process and refuses a second startup
- an application framework forwarding arguments to an existing instance
- a multi-session system where the application enforces one instance per machine instead of per user
- automation that starts the same tool twice before the first launch is fully registered
Modern applications often implement single-instance ownership with a named mutex, lock file, window, pipe, or app-instance framework. Those mechanisms can report other errors such as ERROR_ALREADY_EXISTS; therefore, confirm that 1152 is the original code and not a support label applied by a wrapper.
Evidence to collect
- existing process ID, executable path, user, session, integrity level, and start time
- new launch command line, working directory, and requested document or action
- name and namespace of any mutex, pipe, window class, lock file, or activation endpoint
- whether the existing instance is responsive and owns the expected UI or service role
- terminal-server, Fast User Switching, container, or service-session context
Path identity matters. Two different product versions can share a single-instance object accidentally and block one another even though their executable filenames are in separate directories.
Normal handling
If the existing instance is healthy, activate it or forward the new command line through the application’s documented IPC channel. The second launcher should then exit successfully or return a clear “already running” status rather than repeatedly spawning processes.
If the owner is hung, capture a dump before terminating it. Deleting a lock file or object without checking the live process can allow two instances to modify the same database or configuration concurrently.
Design recommendations
- define whether uniqueness is per machine, session, user, profile, document, or installation
- authenticate IPC used to forward commands to the first instance
- avoid predictable global named objects that another user can pre-create
- distinguish a live owner from stale persistent state
- log ownership acquisition and activation failures with the object name and scope
A named mutex alone shows that an object exists; it does not prove the existing application is ready to receive commands. Pair ownership with a readiness signal and a bounded activation timeout.
Administrator actions
Verify whether another user session owns the process before killing it. On servers, a global single-instance design may be intentional. If no process exists, inspect stale lock files, abandoned IPC endpoints, startup crashes, and permissions that prevent the new instance from taking ownership.
Do not add the application to an automatic restart loop that treats 1152 as a crash. Such a loop can continuously start and exit a redundant second process while the real instance remains healthy.
Related results
ERROR_ALREADY_EXISTS is commonly returned after creating a named mutex that already exists. ERROR_ACCESS_DENIED can indicate that the ownership object exists but cannot be opened. Error 1152 is the application-level statement that a second program instance must not start.
Example
A scheduled task launches a GUI tool while the same user already has it running. The second process returns 1152, but the scheduler marks the task failed and retries every minute. Forwarding the task arguments to the existing instance and treating “already active” as an expected state prevents the retry storm.
References
- Microsoft: System Error Codes (1000–1299)
- Microsoft: CreateMutex function
- Microsoft: Limiting an application to a single instance
Looking for a different code? Search another status or error code.
