我编写了一个程序(一个exe文件),大部分人都用到,但也有不少人用不到,他们都显示为:
部件"tabctl32.ocx或其附件之一不能正确注册:一个文件丢失或无效"经我问过一些人,可能是有些人的机子里没有一些文件,问题是差什么文件呢?这个问题造成我很困惑,因为我也有装“Setup Factory”这个软件。
在“工具”->“扫描文件从属”和“扫描VB工程”显示出要附带DLL完全不同?为什么呢??
而且这个软件也只会做安装程序,不会做出我想要的绿色软件程序(就是单个exe文件...)最后附上我这个软件的地址,希望高人看看是什么问题?
http://www.namipan.com/d/5aa6ea0708fea7b318f1df049ae975e08b01273f5abb0600

解决方案 »

  1.   

    其实第个人的电脑里装的软件都是不一样的,有些软件可能有带tabctl32.ocx,这样当你的软件运行时就不会出错,但是那些没有装tabctl32.ocx的电脑就会出错.其实你可以将tabctl32.ocx这个文件作为一个资源文件写入到你的VB工程中,再编译就可以了.或者找一个软件直接将你的这个OCX控件写入到EXE文件中.
      

  2.   

    呃...但是根据我用的打包软件上,缺的文件好象不止这个"tabctl32.ocx"啊?而是一大堆文件?
      

  3.   

    请问OCX文件是否一定要注册表注册一下,才能使用呢?(因为缺了这些文件...)
      

  4.   

    是需注冊後才可使用,你可以
    1.Regsvr32.exe注冊
    2.安裝程序注冊(比如封裝後安裝)
    3.自編代碼或用API注冊
    比如...Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1中的例子
      

  5.   

    两个办法:
    1)正规一点。用package软件(VB企业版有)做安装文件,然后让用户安装。
    2)简单一点。让客户安装VB。
      

  6.   

    奇怪了......我自己做了个Win98的虚拟机,确实证明了OCX文件不用注册啊?只要把缺的文件(如dll、OCX)放到exe下的同一目录下居然可以运行喔~~????假设真的要注册了,但我仍想做成单个文件exe的绿色软件,那可不可以在exe包里装上必要文件(如dll、OCX),然后在第一次运行时就生成并自动注册,那行不行呢?(不过话说这样做会否给杀毒软件以为是病毒?)有谁可以提供个大概的代码?
    如我就要上面的“tabctl32.ocx”文件。(用什么软件封包到exe文件里呢?)
    然后第一次运行,生成“tabctl32.ocx”文件到system32目录里并自动注册(详细代码?是在Form_Load()里写?还有假如这个文件存在,如何检测代码?)
      

  7.   

    恩我不知道对不对啊,阐述一下我的观点。我也做了一个密码保护卡的读取程序,用VB做的,在我家可以运行,但是在网吧就不可以。在网上查到呢,说是需要VB运行库的支持。
    然后我这样做的,在我家里已经有VB6.0企业版了。在开始-程序-VB 里面,有一个Package &**** 后面忘了。然后一个打包,然后他说有两种方式,第一中是制作安装文件,第二种应该是倒出所需要的文件吧。安装会有一个记录的文件,那个记录的文件名字我忘了。我是照那个记录文件里面写的,注册组件的。注册组件的时候我用批处理文件。
    关于注册组件,我举我的程序的例子,首先是把现在的组件复制到响应的文件夹中,组件应该在的文件夹在安装文件时候的记录中有记载:
    copy comcat.dll %SystemRoot%\system32\comcat.dll
    然后呢注册
    Regsvr32 comcat.dll /s那举个例子,如果我在别人没有VB运行库的机器上要运行我的程序
    那么首先用批处理程序注册并安装组件,然后再运行程序就可以了。
      

  8.   

    啊对,还有你说的那个捆绑的
    那个我估计啊,杀毒软件肯定查出来。所以不要那么做啦。。
    可以这样,用WINRAR自解压文件
    把响应的组件放进去,程序也放进去,用一个批处理,全部都可以搞定的!
      

  9.   


    OCX不用注册表注册的
    直接这样就可以:
    Regsvr32 aaa.ocx
    在开始运行里面,或者在批处理文件里面
      

  10.   

    你如果要实现绿我 可以这样  把所需要的dll或一些文件放在资源文件中   当exe启动时,译放这些文件  如果是dll或者ocx   执行命令 regsvr32 /s filename   当程序退出时  在把所有死放的文件删除