我是制作COM服务器和使用Python的COM的新手,所以我想澄清一些我找不到明确答案的事情:
为COM服务器正确创建GUID
我生成:
手动创建我的COM服务器的GUID,然后将其复制并使用#作为服务器吗?因此,当我分发应用程序时,其他用户将使用我在开发期间创建的相同GUID。
每次初始化应用程序或COM服务器对象时都有新的GUID?
基于每台计算机的新GUID,在初始设置期间只有一次,然后让应用程序保存GUID#,在将来加载时,它会从用户设置文件中提取#?
示例场景1:
i) print(pythoncom.CreateGuid()) #in interpreter
ii) _reg_clsid_ = copy above GUID into your app
示例场景2:
i)_reg_clsid_ = pythoncom.CreateGuid()
示例场景3:
if self.isfile = os.path.isfile(url):
load_previous_generated_GUID(url)
else:
#first time running application or setup file is missing
GUID = pythoncom.CreateGuid()
save_GUID_to_setup_file(GUID)
我可以使用GUID跟踪程序/ COM服务器版本吗?
如果上面的场景#1是正确的,那么: 当我进行升级时,我可以测试旧的GUID,以便我可以正确地与它进行交互吗?
TODO:如何从Python和/或VBA获取COM服务器的GUID?
答案 0 :(得分:2)
您肯定需要方案1.您应该在开发期间生成一次一次 ,并使用它直到您更改类导出的函数集(到COM)。
不仅
在进程外调用对象时,违反规则通常会导致模糊的失败模式。
但是,通常,您不会直接将CLSID暴露给代码,而是公开COM identity rules,这是具有嵌入式版本信息的人类可读字符串,并使用Win32 API PROGIDs进行转换他们俩。 (VBA会为你做这件事; Python也可以这样做。)