title: Retrieving product information from an unmanaged executing application in C#/.NET
body: <p>In C#, it is possible to retrieve assembly related information like product name, version etc using reflection:</p>
  
  <pre><code>string productName = Assembly.GetCallingAssembly().GetName().Name;
  string versionString = Assembly.GetCallingAssembly().GetName().Version.ToString();
  </code></pre>
  
  <p>How do I do the equivalent if the executing assembly is written in unmanaged C++ (say)? Is it even possible? Assume that I have a .NET dll which is being invoked in unmanaged code via a COM interface.</p>
  
  <p><strong>edit:</strong><br>
  To make things absolutely clear, this is my scenario:</p>
  
  <ul>
  <li>I have an executable written in
  unmanaged C++ </li>
  <li>I have a dll written
  in C#/.NET </li>
  <li>The dll is invoked by the
  executable via a COM interface</li>
  <li>Within the .NET dll I want to be
  able to retrieve information like
  the product name and version of the
  calling executable.</li>
  </ul>
  
  <p>Possible?</p>