FIX: DLLHOST.EXE Causes an Error with RPC_C_AUHN_LEVEL_NONE


Symptoms


Dllhost.exe is the system-provided surrogate that is used by a COM DLL (in- process) server to run in its own separate process. When the default (machine-wide) authentication is set to None on Windows NT 4.0, an error occurs during the launching of Dllhost.exe and it terminates. The client's creation API gets a CO_E_SERVER_EXEC_FAILURE error. This error does not occur under Windows 95.

Cause


This is caused by a bug in the security initialization for Dllhost.exe.

Resolution


Set the machine-wide COM authentication level to a value other than None to resolve this problem. You can use the DCOMCNFG utility to change the machine-wide authentication level. If the machine-wide authentication level must be None, then you can use a custom surrogate instead of Dllhost.exe.

Status


Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.

This problem was corrected in Windows NT Service Pack 4 and Windows 2000.

More Information


Steps to Reproduce Behavior

  1. Use DCOMCNFG to set the machine-wide authentication level to None. To do this, run Dcomcnfg.exe, select the Default Properties tab and from the Default Authentication Level list box choose None. Click OK.
  2. Run OLEVIEW and select any in-process DLL server object. Select the Implementation tab, and select the Use Surrogate Process check box. Select the Registry tab (this will add the DllSurrogate named value under the AppID key). From the OLEVIEW menu, choose Object...CoCreateInstance flags, select CLSCTX_LOCAL_SERVER and deselect all other items.
  3. Instantiate the object from OLEVIEW. You will get the error message.