编程时使用了mscomm、 ms flexgrid和ms form lable三个控件,都是从系统已注册控件中找到的。在使用SetupFactory6。0制作安装程序时,已经用regsrv32注册了这三个控件所对应的ocx或者dll文件。但是不知道为什么在2000中就是无法运行安装后的程序。必须安装office2000和vc6后,程序才能运行。而且把office和vc反安装后,程序也能运行!谁能告诉我,究竟为什么!!!

解决方案 »

  1.   

    可能是某个dll的问题。建议查查。
      

  2.   

    问题出在你是动态创建的控件。ActiveX控件的License有两种:设计时和运行时。如果你在对话框上放置控件,编译时运行时License会自动加到EXE中,所以你分发的时候即使用户机器上没有安装VC也可以运行。而你动态建立控件时没有运行时License,控件无法建立。如果机器上安装了VC,虽然没有运行时License,但控件可以在注册表中找到有关信息,所以也可以工作。微软的解决方法就是;
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q151/8/04.asp&NoWebContent=1
      

  3.   

    不错,就是这篇文章:
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q151/8/04.asp&NoWebContent=1&NoWebContent=1你其实可以在程序界面中放置一个你用到的控件(虽然你并不会真正的用到它),这样就可以避免你所说的问题了,^_^顺便帮你顶。
      

  4.   

    我的程序中应该不是动态创建的控件。我所使用的控件都是从工具栏上拖动到对话框上。
    另外,在一个干净的2000系统中,如果手动注册了那三个文件后,再安装Vc(不安装ActiveX),然后用VC打开工程文件时,可以发现Form Lable和MSCOMM控件都不能初始化,不能在对话框上正确显示,而FlexGrid却可以。这又是为什么呢?
    而且,用depend工具查看我的程序,也没有显示需要那三个文件啊。
    究竟是为什么?到底如何解决呢?请大家帮我顶啊!
      

  5.   

    你进了微软的Dll地狱了!!呵呵
      

  6.   

    Dll地狱?难度是因为DLL版本的原因?应该不是吧
      

  7.   

    mscomm、 ms flexgrid和ms form lable三个控件需要其他的支持库,用depend看看吧!
      

  8.   

    你是说要用Depend查看那三个文件吗?我试试
      

  9.   

    我在vb中碰到过类似的问题:
    1、有可能是你做安装包的时候,文件组里的自注册文件没有设置好,每个自注册ocx或dll文件在他的属性里都有标明:selfregister,不能出错的!
    2、也有可能是缺少相关的dll文件,比如msvcp60.dll,msvcrt.dll等。
      

  10.   

    可能是作安装包时缺少了某个控件的selfregistry
      

  11.   

    你是不是只注册了fm20.dll,这个只是英文版的,如果需要中文支持还要再注册fm20chs.dll
      

  12.   

    mscomm32等均有license号,你不仅要注册,还要在注册表中写入一些东东:
      

  13.   

    问题已解决,的确是maggice所说的那样
    同时也谢谢所有帮忙解决和up的兄弟,呵呵
    结贴,给分
      

  14.   

    1)   如果操作系统是windows2000将MSCOMM32.ocx文件拷入c:\winnt\system32\
    (2)  如果操作系统是windows2000  在运行中输入 regsvr32    c:\winNT\system32\Mscomm32.ocx
    (3)regedit
    (4)找HKEY_CLASSES_ROOT\Licenses,在其中添加主键
                4250E830-6AC2-11cf-8ADB-00AA00C00905
       其内容为:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun//当然你也可以用代码来实现上面的步骤了 
    :-)