A COM object is created from one program, but not from another, running under the same user

We ran into a rather strange problem with our COM component. The component implements a well-known interface and is consumed by a third-party product with closed source code (hereinafter referred to as Product X). Product X is configured through the Windows registry. Product X reads the registry and finds the class identifier of our component.

Our component is a 32-bit in-proc implemented in C ++ using ATL, and we register it using COM + on 64-bit systems so that it is activated in a surrogate process.

Now product X cannot use our component and traces E_ACCESSDENIEDin the Windows event log, and the following error message also appears

The permission settings for the application do not provide local activation permission for the COM server application with CLSID {COM object class identifier here} and APPID {app + COM application id here} for the MACHINENAME user \ SID of the administrator (SID here) from the LocalHost address (using LRPC). This security permission can be changed using the component services administration tool.

in the system log.

This seems like a permission issue. So, in C # we created the program "Hello, world", which is a newCOM component and calls one trivial (never crash) method:

Component OurComponent.IOurComponent = new OurComponent.OurcomponentClass (); component.TrivialMethod ();

, Product X, - , " ", COM +.

, , , COM-, - . ?

+5
1

, .

. 1 "Com Visible". 2 ( )

"" → "" → " ". " ", "", " ", " DCOM". . → → . - " " - , "", "". , , , , /. ( /) , , .

0

All Articles