zoukankan      html  css  js  c++  java
  • 64位win7注册com组件类别失败解决办法

    最近遇到了这个问题,在注册com组件类别时总是失败,提示成功,但是通过oleviewer却看不到。

    注册脚本:

    HKCR
    {
       NoRemove 'Component Categories'
       {
         NoRemove {7BAAA0EE-A752-4C5A-905C-80404BB9F06F}
         {
           val '409' = s 'vector-cpp'
         }
       }
        atl.test.1.1 = s 'Test Class'
        {
            CLSID = s '{6490606F-5AD6-4315-8726-34B021198622}'
        }
        atl.test.1 = s 'Test Class'
        {        
            CurVer = s 'atl.test.1.1'
        }
        NoRemove CLSID
        {
            ForceRemove {6490606F-5AD6-4315-8726-34B021198622} = s 'Test Class'
            {
                ProgID = s 'atl.test.1.1'
                VersionIndependentProgID = s 'atl.test.1'
                ForceRemove Programmable
                InprocServer32 = s '%MODULE%'
                {
                    val ThreadingModel = s 'Apartment'
                }
                TypeLib = s '{E455C0B3-91DD-4F41-A79C-9A00403E39E6}'
                Version = s '1.0'
                'Implemented Categories'
                {
                    {7BAAA0EE-A752-4C5A-905C-80404BB9F06F}
                }
            }
        }
    }

    浪费了大半天时间,本身注册脚本写得是没问题的。

    问题出在注册表上,我的系统是win7 X64位的,但是我编译的项目工程师基于WIN32平台的。

    image

    这样的话,com组件在自注册会把CLSID注册到win7 64位注册表下对应的32位子项CLSID中(如下):

    image

    并没有注册到64位对应的HKCRCLSID下,所以自然在oleviewer下的Component Categories对应组建类别下找不到对应的CLSID。

    解决方法很简单,就是把项目编译平台改成X64!

    image

    然后重新编译,这样对应CLSID就会被注册到64位注册表的CLSID下,自然在oleviewer下的Component Categories就可以看到了。

    image

  • 相关阅读:
    VMware安装虚拟机(Ubuntu)
    鼠标拖拽事件
    css层叠样式表
    html--form表单常用操作
    python学习之HTML-table标签
    python之web前端day01
    字符串各种操作,关于字符串的内置函数
    正则中匹配次数的问题
    re模块
    Github网站打不开的问题
  • 原文地址:https://www.cnblogs.com/sunbing/p/3935346.html
Copyright © 2011-2022 走看看