回 帖 发 新 帖 刷新版面

主题:将同一个文件用放在不同的文件夹下用regsvr32.exe分别注册多次,效果是什么?是全部生效还是最

将同一个文件用放在不同的文件夹下用regsvr32.exe分别注册多次,效果是什么?是全部生效还是最后一次生效呢?
我想了解一下理论性的问题,比如想注册一个文件。
我把同一个文件复制多个复本放在不同的文件夹下,然后用regsvr32.exe命令多次注册。
我想了解最后的效果是什么?
1.是最后一次注册的生效,还是所有的注册全生效了。
2.多次重复注册会不会产生冲突,因为多次是同一个文件。
3.如果是同一个文件名,但是文件完全不同,又是什么效果呢?

为什么问这个问题呢?因为有时程序发布打包时,要将一些运行库和自已程序中用到的控件dll,ocx等文件进行打包,可是这些文件我不知客户的机器上有没有,我想不管客户的机器上有没有,我都将这些文件拷到我的程序文件夹中,然后全部注册。
我不知这种做法可行否?为何这些文件不放到system32下呢?因为我怕文件名相同,但是如果版本不同的话,会产生冲突。所以想不管客户机器上如何,我都拷入并注册我打包的文件。

基于上述考虑,我才问这个问题的。

回复列表 (共3个回复)

沙发

那就只有自己找资料,看看,那dll,ocx为什么要注册,注册是干什么的,以及一些基础知识吧!~

1.全有效,并覆盖注册表消息.
2.产生什么冲突?注册是干什么的?
3.各做各的事.只要不覆盖文件,万事好商量.

板凳

只要同一个DLL文件,不管怎么改文件名,注册时都是写入注册表里:HKEY_CLASSES_ROOT\CLSID\{GUID}
[GUID}一般是这样的形式{00000001-4FEF-40D3-B3FA-E0531B897F98},而同一个DLL其GUID是一样的.注册表的子项下包含该GUID的信息,例如文件路径,COM信息

所以,最后一次注册会覆盖之前的信息.
COM调用时,是通过查找注册表GUID定位COM服务提供者的(在这里是DLL文件)

3 楼

最好自己做个试验,加深理解。
从网上下载 regshot,这个软件能清楚地列出注册表修改前后的变化,你在注册一个文件前,用这个软件提取注册表内容,在注册文件后,再提取一次,然后点击“比较”按纽,就会把注册表变化之处全部列出来,你可以从容不迫地慢慢分析。

我来回复

您尚未登录,请登录后再回复。点此登录或注册