Is it possible to know which .dll called a C# service? Even if the call passes through a COM layer first?

  .net, .net-4.6.2, c++, com

We have layered architecture that has a native C++ client, and a managed client C++/C# wrapper around it. (2 dll files, one native one managed)

These two clients go through a COM layer to a C# service, there are many different versions of these clients and the service is designed to be backward compatible.

Recently we realized we might need to know the version of the client calling into the service. (the dll files)
Is there a way to go through the call stack and grab the dll that called in and its version? Does going through the COM layer make this an impossible task?

Other products consume and deliver these clients, so the location or path of the dlls is not always known. Getting the location through the call stack might be an alternative route to the solution, but I might be thinking about this entirely incorrectly.

We can’t edit existing released client dlls, so we have to be able to determine the version of the dlls from the service layer at runtime.

Source: Windows Questions C++