【问题标题】:How do I change a DCOM's guid in vb6?如何在 vb6 中更改 DCOM 的 guid?
【发布时间】:2009-05-26 19:12:18
【问题描述】:

我有一个 Windows 服务,它正在用某个 guid A 实例化一个 dcom 对象。

我需要用新版本替换那个 dcom 对象。 当我创建和编译我的替换 dcom 对象时,它是使用 guid B 创建的。

如何将替换 dcom 对象的 guid 从 guid B 更改为 guidA?

【问题讨论】:

    标签: vb6 guid dcom


    【解决方案1】:

    如果您尝试更改“服务器”端的 ID(发布该特定类的 DLL 或应用程序),当您在项目属性、“组件”选项卡中选择“不兼容”时,VB 会为您执行此操作.

    如果您尝试更改在“客户端”(使用由另一个 dll/app 发布的类的 DLL 或应用程序)中实例化的对象,则需要更改引用(通过引用或组件,取决于我们谈论的是哪种对象),以便您指向新版本的服务器(使用更新的 GUID 发布他的类的那个)。这意味着删除当前引用并添加对新服务器的引用。如果名称没有改变,其他一切都应该像以前一样工作,显然类的接口有微小的变化。

    据我所知,您无法直接访问 VB6 中的 GUID。

    【讨论】:

      【解决方案2】:

      我设法重新编译了我的替换 DCOM 对象并让它使用 Guid A by ...

      1. 从注册表中删除所有对 Guid B 的引用
      2. 删除我的替换 DCOM 对象 exe 文件
      3. 复制到原DCOM exe文件中
      4. 将原 DCOM exe 文件重命名为替换名称
      5. 重新编译vb工程

      我猜当 VB 替换 exe 文件时,它会查找 GUID,然后将其重用于重新编译的版本。

      【讨论】:

        【解决方案3】:

        您应该将您的应用程序(替换 DCOM 对象)编译为与现有 dll 二进制兼容,这样它将继承相同的 GUID 并且版本号将增加。如果你用替换覆盖现有的 DCOM dll,一切都应该工作。

        例如,在 VB6 中,您可以在项目对话设置中指定二进制兼容性。不确定你在哪里为 C++ 设置它,我认为 GUID 嵌入在源代码中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-27
          • 2013-12-23
          • 1970-01-01
          相关资源
          最近更新 更多