小弟的winform程序中用到了flash8,在客户端安装时,如果客户机注册了flash8.ocx,则安装时不自动注册,否则就注册。现在是不知道flash8在注册表中的键值啊,请高手指点一下。

解决方案 »

  1.   

    应该知道ocx的Class ID吧,在ocx文件的属性里就可以看到,然后在注册表中搜索一下注册表项为ocx控件Class ID的项.好像ocx控件注册后在注册表里的注册表项的结构都是一样的.CodeBase,Version等信息都有
      

  2.   

    重复注册一下,管它有没有。对系统没多大影响的。如果你是在是要检测,告诉你一个方法,检测Windows安装目录下有一个Macromed目录下面的文件,如果有flash8.ocx就表明这个控件是注册了的。也可以把安装flashplayer的安装程序打到你的安装程序包里,安装程序会自动判断该不该注册,这个安装文件可在你的flah安装目录里面找。
      

  3.   

    多谢.runnercn()
    我不能重复注册,如果这样,一亘它卸载我的软件时,那么将flash8也卸掉了,我判断的目的是:如果flash8是因为安装我的软件而注册的,那么卸载时也要卸载掉flash8,否则,不能卸载.
      

  4.   

    创建一个对象试试,如果可以正常创建,那就是已经注册的,如果有错误,捕捉错误,判断错误类型,一般是ocx控件没注册引起的,
      

  5.   

    不用知道注册表的,你在程序中怎么调用这个对象的?
    如果是vb6,可以直接createobject(classname)这样创建对象
    dotnet引用时会自动封装了一个类,你创建这个类就可以了
      

  6.   

    1.C#程序
    2.我就是在工具箱中添加引用了这个com组件,然后把控件放到了窗体上.
    3.部署时,我把flash8.ocx的Register属性改为:vsdrfCom,这样安装软件时,就自动注册了flash8.
    这样做的问题时,如果卸载我的软件,那么flash8也掉了,所以在加上判断的,请jimh(Jimmy)指点。
      

  7.   

    你可以尝试调用这个对象试一下  使用COM方式调用。。不是添加引用那种。。如  
    try
    {
    obj = createobject("adodb.recordset") 
    }
    catch
    {
       有问题的创建不起来的话。会报错误信息
    }
      

  8.   

    首先是你的project有相关的引用,然后---
    try
    {
      AxShockwaveFlashObjects.AxShockwaveFlash axShockwaveFlash = new AxShockwaveFlashObjects.AxShockwaveFlash();
    }
    catch (Exeception ex)
    {
    //出错就有可能是没注册了
    }
      

  9.   

    楼上没明白我的意思。但是就算是执行catch了,那么我要怎样才能注册呢。
      

  10.   

    判断注册表项:
    HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11CF-96B8-444553540000}
    如果存在,那说明已经注册了flash8.ocx。
      

  11.   

    在注册表中还有Flash8.ocx的安装路径:
    [HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}\InprocServer32]
    @="C:\\WINDOWS\\system32\\Macromed\\Flash\\Flash8.ocx"
      

  12.   

    谢 dolfen(海之豚) ,我试过了,还是不行。
    我先注册了flash8.ocx,当然,不在@="C:\\WINDOWS\\system32\\Macromed\\Flash\\Flash8.ocx"这个路径里。
    然后再把它卸载掉,发现注册表里HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11CF-96B8-444553540000}是始终有的,不管你注没注册flash8.ocx
      

  13.   

    判断注册表是不可靠的,最好检查一下系统目录是否含有flash8.ocx(这里要注意不同操作系统的系统目录不一样),然后检查注册表是否有相关键值,最后new一下对象,如果上述任何一个步骤失败的话,就重新注册注册可以开一个cmd.exe的进程,执行命令行"regsvr32.exe  全路径\flash8.ocx"你最好打包一个flash8.ocx到你的安装程序中