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

时间:2013-10-05 18:14:09

标签: python com guid com-server

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

为COM服务器正确创建GUID

我生成:

  1. 手动创建我的COM服务器的GUID,然后将其复制并使用#作为服务器吗?因此,当我分发应用程序时,其他用户将使用我在开发期间创建的相同GUID。

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

  3. 基于每台计算机的新GUID,在初始设置期间只有一次,然后让应用程序保存GUID#,在将来加载时,它会从用户设置文件中提取#?

  4. 示例场景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 个答案:

答案 0 :(得分:2)

您肯定需要方案1.您应该在开发期间生成一次一次 ,并使用它直到您更改类导出的函数集(到COM)。

不仅

在进程外调用对象时,违反规则通常会导致模糊的失败模式。

但是,通常,您不会直接将CLSID暴露给代码,而是公开COM identity rules,这是具有嵌入式版本信息的人类可读字符串,并使用Win32 API PROGIDs进行转换他们俩。 (VBA会为你做这件事; Python也可以这样做。)