2010-03-15 66 views
0

我正在使用comtypes爲某個com庫生成包裝。我遇到了一些問題,但沒有正確生成。我可以通過手動完成缺失的工作來解決這個問題。但是,我可以依靠CLSID不會改變的事實嗎?對於安裝在兩臺不同機器上的相同程序,CLSID可以不同嗎?

比方說:

我安裝一個程序,COM庫富1.0,現在我在另一臺PC上安裝該程序的版本完全相同,將接口的CLSID的改變?

這可能是一個非常愚蠢的問題。

回答

1

免責聲明:做了很多的COM,但從來沒有與蟒蛇。

COM接口的UUID是接口定義的一部分。它應該在每臺機器上都一樣,並且始終保持一致。

此外,在ATL COM land中,類有CLSID,接口有IID。他們都有UUID(或可能是GUID)。不確定關於python。

+0

對不起,我真的很累,我想我搞砸了我的CLSID和IID和GUIDS呃。感謝這回答了我的問題。 – UberJumper 2010-03-15 06:41:20

1

該CLSID至少應該不會改變。自然,一個程序可以做許多違反規定的愚蠢事情。但是:由於CLSID是如何加載類的,所以更改後的CLSID意味着類的USING程序也必須使用已更改的CLSID。

蘇,你的假設是正確的 - 如果在兩臺計算機上安裝了相同版本的相同程序,則假定CLSID不會改變是安全的。

這甚至在版本之間應該這樣......但是如果庫Foo 1.0只被一個程序使用,那麼程序員可能會逃脫一個改變了的CLSID。但它不應該改變。

相關問題