何时为 COM 服务器生成新的 GUID?(Python中的示例)



我是制作COM服务器和从Python使用COM的新手,所以我想澄清一些我找不到明确答案的事情:

为 COM 服务器正确创建 GUID

我是否生成:

  1. 手动为我预期的COM服务器提供GUID,复制它并从此将该#用于服务器?因此,当我分发应用程序时,其他用户将使用我在开发期间创建的相同 GUID。

  2. 每次初始化应用程序或 COM 服务器对象时都有新的 GUID?

  3. 基于每台计算机的新 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?

你肯定想要场景 1。 应在开发过程中生成一次 CLSID,并使用该函数,直到更改类导出的函数集(到 COM(。

不仅可以使用 CLSID 跟踪版本,还必须在发布新版本时更改 CLSID,否则会破坏 COM 标识规则;违反规则通常会导致在进程外调用对象时出现模糊的失败模式。

但是,通常情况下,您不会直接向代码公开 CLSID,而是公开 PROGID,它们是具有嵌入式版本控制信息的人类可读字符串,并使用 Win32 API CLSIDFromProgID 在两者之间进行转换。 (VBA将为您执行此操作;Python也可以这样做。

相关内容

  • 没有找到相关文章

最新更新