程序中引用了几个控件,编译程序后只拿*.exe到客户那里运行肯定是不行的。问题就是这些控件是否需要注册。
  方法1:拷贝*.dll,*.ocx到system32,然后regsvr32。
  方法2:让*.dll,*.ocx和*.exe一个目录即可。
  上面两种方法都可以使程序正常运行,我的问题是
1。你用哪种方法部署你的程序?
2。如果是第一种方法,获取不同系统system32并copy文件到system32文件夹的程序你是怎么写的?
3。第二种方法在注册表中没有信息,程序是怎么找到这个控件的?
4。你认为哪种方法比较好?--------------------------------
有识别不同系统system文件夹,并copy文件的程序请贴出来,谢谢。

解决方案 »

  1.   

    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As LongPrivate Sub Form_Load()
        Dim sSave As String, Ret As Long
        sSave = Space(255)
        Ret = GetSystemDirectory(sSave, 255)
        sSave = Left$(sSave, Ret)
        MsgBox "Windows System directory: " + sSave
    End Sub
      

  2.   

    FileCopy 语句示例
    本示例使用 FileCopy 语句来复制文件。示例中假设 SRCFILE 为含有数据的文件。Dim SourceFile, DestinationFile
    SourceFile = "SRCFILE"   ' 指定源文件名。
    DestinationFile = "DESTFILE"   ' 指定目的文件名。
    FileCopy SourceFile, DestinationFile   ' 将源文件的内容复制到目的文件中。
      

  3.   

    1。你用哪种方法部署你的程序?
    //安装,而不是按你上面的2钟方法。
    2。如果是第一种方法,获取不同系统system32并copy文件到system32文件夹的程序你是怎么写的?
    //如果使用安装不存在这个问题,如果强行放到system32下很可能会与原系统文件冲突,用VB安装程序则会避免这个问题
    3。第二种方法在注册表中没有信息,程序是怎么找到这个控件的?
    4。你认为哪种方法比较好?
    //3,4个问题我一起答你。如果你清楚一下vb程序的访问你就应该知道,程序首先需要ocx和dll时候会查找自己相同的根目录或者指定目录,当你regsvr32的时候,讲会给你的ocx指定好路径。
     如果根目录下找不到所需要的ocx和dll的时候,程序才会从system32下去找
     所有优先采用第2个方法。  其实你用打包工具打包安装就没这个烦恼了。
      

  4.   

    程序搜索OCX,DLL的路径先后为:App,System,Win如果怕控件版本冲突,最好还是放在程序所在目录。
      

  5.   

    InstallShield,WISE,Setup Factory,Setup Builder...
      

  6.   

    程序搜索OCX,DLL的路径先后为:App,System,Win如果怕控件版本冲突,最好还是放在程序所在目录。
    -------------------------
    那就是不用安装了?
      

  7.   

    程序搜索OCX,DLL的路径先后为:App,System,Win如果怕控件版本冲突,最好还是放在程序所在目录。
    -------------------------
    那就是不用安装了?
    -------------------------
    大部分控件都不必安装,程序会按以上路径找到后自动注册。