How to get an ActiveX component's registered p

2019-05-10 11:10发布

问题:

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.

回答1:

Search under the HKEY_CLASSES_ROOT\CLSID with the name of your EXE file. It should be used as value of "LocalServer32".



回答2:

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...