I've got a registered ActiveX component which I'm referencing in a C# project. However, I'd like to know the original path to the actual component being run. This is not the execution path per se. Is there something saner than searching the registry by hand?
The component is registered with a simple /regserver command, if that's relevant.
Search under the HKEY_CLASSES_ROOT\CLSID
with the name of your EXE file. It should be used as value of "LocalServer32".
Here's a function that fetches the value out of the Registry. Extra validation required.
using Microsoft.Win32;
//...
static string GetCOMPath(string comName)
{
RegistryKey comKey = Registry.ClassesRoot.OpenSubKey(comName + "\\CLSID");
string clsid = (string)comKey.GetValue("");
comKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\LocalServer32");
return (string)comKey.GetValue("");
}
However, I was wondering if that wasn't already wrapped somewhere in some lost C# library...