我正在使用comtypes为某个com库生成包装器。我有一些问题,但没有正确生成。我可以通过手动完成缺失的工作来解决这个问题。但是,我可以依赖CLSID不会改变的事实吗?
让我们说:
我使用com库Foo 1.0安装程序,现在我在另一台PC上安装完全相同的程序版本,接口的CLSID会改变吗?
这可能是一个非常愚蠢的问题。
答案 0 :(得分:1)
CLSID至少应该不会改变。当然,一个程序可以做很多违反规定的愚蠢的事情。但是:由于CLSID是类的加载方式,更改的CLSID意味着类的USING程序也必须使用更改的CLSID。
Su,您的假设是正确的 - 如果在两台计算机上安装了相同版本的相同程序,则可以安全地假设CLSID没有更改。
在版本之间甚至应该这样做......但是如果库Foo 1.0仅由一个程序使用,程序员可能会使用已更改的CLSID。但是,它不应该改变。
答案 1 :(得分:1)
免责声明:完成了很多COM,但从未使用过python。
COM接口的UUID是接口定义的一部分。它应该在每台机器上都是一样的,而且一直都是这样。
此外,在ATL COM中,类具有CLSID,接口具有IID。它们都有UUID(或可能是GUID)。关于python不确定。