同一程序在两台不同机器上的CLSID可以不同吗?

0 投票
2 回答
772 浏览
提问于 2025-04-15 20:26

我正在使用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,我就不太确定了。

撰写回答