When a non-inproc activation request first occurs for a CLSID, the SCM uses the following precedence rules to decide what to launch:
1. If the AppID has a LocalService named value, COM uses the OpenSCManager/StartService APIs to start the server.
2. If the CLSID has a LocalServer32 entry, COM starts the designated process using CreateProcess or CreateProcessAsUser.
3. If the AppID’s DllSurrogate named value is present yet empty, a system-provided surrogate process (dllhost.exe) is started.
4. If the AppID’s DllSurrogate named value is present and contains a file name, the designated custom surrogate is started.
5. If the AppID’s RemoteServerName named value is present, the request is forwarded to the SCM on the designated host.