现象:程序中有几个ActiveX exe程序,因为暂时只是调试还没制作安装包,都只用批处理(bat文件)注册,我在批处理中用的是x.exe /unregserver反注册后再 x.exe /regserver进行的注册,但我发现在批处理中这样子的注册根本无效,只有手动在cmd中注册才有效,这样子就很麻烦了,每个测试电脑都得去为每个程序打一遍命令bat注册时没报任何错,但在运行时则报"自动化错误",这是明显的未注册成功,而在CMD中打命令注册后却是能正常运行了.路径也不会错,我把bat放在在该Exe同一目录中,没有用绝对目录,这应该不会有影响吧?
 问题:请问在bat中注册无效是怎么回事? 这样的问题不仅是在注册Activex EXE进出现,以前在进行一些其他操作时也无效,只有手动在cmd中操作才有效,不知道是不是批处理程序或cmd的bug,另外重点的一点是,除了制作安装包和手动使用cmd外,有没有其他方式可以注册ActiveX exe的?最好有Vb6的源码,我顶多再写一个小程序来注册它们附加异常情况:
另外还有一个异常情况是,我的程序放在"我的文档"(D:\My Documents\)的某个目录中,工程属性的调试选项卡中,把启动对象设置为该目录下的某个文件,再进行编译调试时总是提示"文件路径访问错误",路径如下:\My Documents\中国移动开发文档\源程序\Project\Dll\CMBAS_MSGDLL\Test\CMBAS_MSGDLL.exe(该程序存在,路径也没错)VB总是不能识别这个路径我不知道这是不是操作系统的原因

解决方案 »

  1.   

    唉  不行
    注册还是不成功
    用绝对路径也不行,引号还是不行,就是注册不了,只有在cmd里输命令   不知道这是不是cmd的bug
    不过反注册倒是顺利 
      

  2.   

    反注册都可以,注册却不行,这跟啥CMD什么关系呢?应该是程序当中可能有什么限制.至少第一个应该是可以注册成功的.我说的路径不是指是否绝对路径,而是工作路径,这个可能跟你的程序所需要的某些支持库(比如DLL)等有关系.
      

  3.   


    其他DLL是没问题的,我调试的代码如下:
    Private Sub MnuSmgManageMent_Click()
        Dim msgManager As New CMBAS_MsgManager.cMsgManager                   '没注册成功时提示自动化失败,在CMD里注册之后便没问题
        msgManager.msgManagement CurrentUser, CONN                      
    End Sub
      

  4.   

    这些写BAT的内容:"C:\My Documents\中国移动开发文档\源程序\Project\Dll\CMBAS_MSGDLL\Test\CMBAS_MSGDLL.exe" /regserver
    PAUSE
      

  5.   

    不是让你加Pause,注意看第一行的双引号。
      

  6.   

    阿泰说你又入选MVP了,恭喜恭喜~~我都试过了,不管有没有双引号,不管是用绝对路径还是相对路径 都没有注册成功唉,反正那命令在CMD下一打是肯定没问题,
    老兄有没有注册ActiveX exe的VB代码?由程序自己来注册是比较爽的.
      

  7.   

    把Active Exe和你的bat文件放同一目录下,并且在资源管理器当中转到该目录下然后双击执行试试能否注册成功。
      

  8.   

    现在就是放在同一目录下,,,,,反正用bat我是试过N遍了 无效...
    兄弟们给段注册ActiveX exe的代码啊 注册DLL和OCX的网上多的是,可是又不能用来注册exe..
      

  9.   

    我改用CreateObject
    在CreateObject前用Shell注册,一样不成功
    还发现有的意思的状况在已经注册成功时,运行以下代码不会出错Private Sub Command1_Click()
    'Shell "..\cmbas_msgmanager.exe /unregserver"
    Shell "cmd /c ..\cmbas_msgmanager.exe /regserver",0
    Set mManager = CreateObject("CMBAS_MsgManager.cMsgManager")
     mManager.msgManagement Currentuser, CONN
    End Sub再稍微改一改就出错了
    Shell "cmd /k ..\cmbas_msgmanager.exe /regserver", 0     '报错
    Shell "cmd.exe /k ..\cmbas_msgmanager.exe /regserver", 0     '报错
    Shell "cmd /c ..\cmbas_msgmanager.exe /regserver"  '报错
    Shell "..\cmbas_msgmanager.exe /regserver", 0     '报错
    只有下面这句不报错:
    Shell "cmd /c ..\cmbas_msgmanager.exe /regserver",0 
      

  10.   

    经验N*N次调试,使用短路径,CreateObject+SHELL,问题已完美解决
      

  11.   

    shell """***\cmbas_msgmanager.exe"" /regserver"