2009-05-26 70 views
0

我有一个Windows服务,用一个特定的GUID实例化dcom对象。如何在vb6中更改DCOM的guid?

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

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

回答

2

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

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

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

0

我设法重新编译我更换DCOM对象,并把它使用的Guid一个由...

  1. 从注册表
  2. 卸下来的Guid B中所有引用删除我更换DCOM对象exe文件
  3. 复制原DCOM exe文件
  4. 重命名原始DCOM EXE文件替换名称
  5. 重新编译VB项目

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

0

您应该编译您的应用程序(替换DCOM对象)与现有的dll二进制兼容,这样它将继承相同的GUID,版本号将增加。如果你用现成的DCOM DLL写入替换,所有东西都应该可以工作。

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