2009-05-26 71 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。