同一程序在两台不同机器上的CLSID可以不同吗?
我正在使用comtypes来为某个com库生成包装器。不过,我遇到了一些问题,有些东西没有正确生成。我可以通过手动完成缺失的部分来解决这个问题。但是,我能否相信CLSID是不会改变的呢?
假设:
我在一台电脑上安装了一个包含com库的程序Foo 1.0,然后我在另一台电脑上安装了完全相同版本的这个程序,接口的CLSID会改变吗?
这可能是个很傻的问题。
2 个回答
1
CLSID是一个标识符,理论上是不会改变的。当然,程序可能会做一些很傻的事情,导致规则被打破。但是:因为CLSID决定了一个类是如何被加载的,如果CLSID发生了变化,那么使用这个类的程序也必须使用新的CLSID。
所以,你的假设是对的——如果在两台电脑上安装的是同一个版本的程序,可以安全地认为CLSID是不会改变的。
这在不同版本之间也应该是这样……不过,如果库Foo 1.0只被一个程序使用,程序员可能会因为改变CLSID而逃过一劫。但实际上,CLSID是不应该改变的。
1
免责声明:我在COM方面有很多经验,但从未使用过Python。
COM接口的UUID是这个接口定义的一部分。它在每台机器上都应该是一样的,并且永远不会改变。
另外,在ATL COM的世界里,类有CLSIDs,接口有IIDs。它们都有UUID(或者可能是GUID)。至于Python,我就不太确定了。