首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ProgID获取dll目录

从ProgID获取dll目录
EN

Stack Overflow用户
提问于 2012-04-19 00:54:40
回答 1查看 2.3K关注 0票数 2

我正在使用以下命令加载dll

代码语言:javascript
复制
Type progID =  Type.GetTypeFromProgID(SimpleConfiguration.currentConfiguration.OPOSWrappedSO);

我还想将此dll的路径添加到path环境变量中。有没有办法从类型中获取目录?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-19 19:59:51

代码语言:javascript
复制
    public static string GetDLLPathFromClassID(string classID)
    {
        var regPath = @"\CLSID\" + classID + @"\InProcServer32\";
        return  GetDefaultRegistryValue(Registry.ClassesRoot, regPath);
    }

    public static string GetClassIDFromProgID(string progID)
    {
            var regPath =   progID + @"\CLSID\";
            return  GetDefaultRegistryValue(Registry.ClassesRoot, regPath);
    }

    private static string GetDefaultRegistryValue(RegistryKey rootKey, string regPath)
    {
        try
        {
            var regPermission = new RegistryPermission(RegistryPermissionAccess.Read,
                                                       @"HKEY_CLASSES_ROOT\" + regPath);
            regPermission.Demand();
            using (var regKey = rootKey.OpenSubKey(regPath))
            {
                if (regKey != null)
                {
                    string defaultValue = (string) regKey.GetValue("");
                    {
                        return defaultValue;
                    }
                }
            }
        }catch(Exception e)
        {
           //log error
        }
        return "";
    }

    public static string GetDLLDirectoryFromProgID(string progID)
    {
        var classID = GetClassIDFromProgID(progID);
        var fileName = GetDLLPathFromClassID(classID);
        if(string.IsNullOrEmpty(fileName))
        {
            return "";
        }
        return Path.GetDirectoryName(fileName);
    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10214183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档