gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:29:25 25 4
gpt4 key购买 nike

我是制作 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 identity rules ;在进程外调用对象时,违反规则通常会导致模糊的失败模式。

但是,通常情况下,您不会直接向代码公开 CLSID,而是公开 PROGIDs相反,它们是带有嵌入式版本控制信息的人类可读字符串,并使用 Win32 API CLSIDFromProgID在两者之间转换。 (VBA 会为您做这件事;Python 也可能会做这件事。)

关于python - 何时为 COM 服务器生成新的 GUID? (Python 中的示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19201087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com