[C#] ActiveX 객체가 담긴 파일의 경로 얻기

ActiveX 객체는 ocx나 dll 파일에 담겨 있는데요. 이 ActiveX 객체를 등록(regsvr32.exe를 통해 직접 등록되거나 설치 파일 등을 통해 등록)될 경우 객체 ID를 통해 해당 ActiveX 파일의 전체 경로를 파악해야 할 필요가 있습니다. 이때 사용하는 함수입니다.

private static string GetFilePathOfActiveX(string comName)
{
    RegistryKey comKey = Registry.ClassesRoot.OpenSubKey(comName + "\\CLSID");
    if (comKey == null) return null;

    string clsid = (string)comKey.GetValue("");
    RegistryKey subKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\LocalServer32");

    if (subKey == null) {
        subKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\InprocServer32");
    }

    if (subKey == null)
    {
        subKey = Registry.ClassesRoot.OpenSubKey("WOW6432Node\\CLSID\\" + clsid + "\\InprocServer32");
    }

    if (subKey == null) return null;

    return (string)subKey.GetValue("");
}

위의 방식은 현재 Windows 10 64Bits 환경에서 작동하는 것을 확인했습니다. 다른 환경에서도 정상적으로 작동하는지 확인이 필요한데요. 혹 Win10 64Bits 환경 이외에서도 어떻게 작동하는지 댓글을 통해 언급해 주시면 좋겠습니다.

위의 함수는 아래처럼 사용할 수 있습니다.

MessageBox.Show(GetFilePathOfActiveX("XrMap.XrMapControl"));
카테고리C#

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다