想同时运行同一程序的2个不同的版本,需要注册一个DLL.我将dll分别置于不同的路径分别注册这样会不会影响2个程序的各自运行呢?谢谢!

解决方案 »

  1.   

    不会ActiveX DLL是基于COM的COM靠GUID区分对象
      

  2.   

    如果该dll的版本兼容是工程兼容或者二进制兼容
    多次注册后,注册表的信息不会改变如果版本兼容是不兼容,则注册表信息发生改变,后面注册的会覆盖前面注册的信息
    注册表中的progid(工程名.类名)是不会变的所以程序中采用new绑定,此时程序会找不到注册信息,应为工程引用中的信息是从注册表typelib项中得到的
    而采用createobject则不会有这个问题
      

  3.   

    :online(龙卷风V2.0--再战江湖)
    我的理解:
    1、不兼容部件:生成新的GUID,即使dll的文件名一样,也当作2个不同的组件看待,就是说会在注册表里注册2套不同的键值
    2、二进制兼容:套用原有的GUID,键值只建一套,总是用最新的注册键信息更新原有Guid所对应的内容。
    是不是我理解有问题?
      

  4.   

    1、不兼容部件:生成新的GUID,即使dll的文件名一样,也当作2个不同的组件看待,就是说会在注册表里注册2套不同的键值
    以project.class为例
    你可以看一下,root\project.class该键不会改变,但是每注册一次(不兼容)他的classid已经改变,在root\classid\这里会有相对应得classid.原有的classid就成了垃圾信息2。正确
      

  5.   

    因为前一版本的系统在上线运行,注册新版本DLL怕影响现有系统