如何在vb6中更改DCOM的guid?

时间:2009-05-26 19:12:18

标签: vb6 guid dcom

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

  1. 从注册表中删除对Guid B的所有引用
  2. 删除我的替换DCOM对象exe文件
  3. 复制原始DCOM exe文件
  4. 将原始DCOM exe文件重命名为替换名称
  5. 重新编译vb项目
  6. 我想当VB替换exe文件时,它会查找GUID,然后重新使用它来重新编译版本。

答案 2 :(得分:0)

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

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