試圖追查一個COM問題,我調試我的代碼,並似乎看到相同的GUID來表示不同的方式...GUID/PROGID/CLSID混亂
我有一條線在我們的代碼: class __declspec(uuid("{D4F83347-E58E-11d1-9D47-006008098294}"))
以及各種在呼叫之間,然後到註冊表的東西:
CLSID clsid;
::CLSIDFromProgID("myProgId",&clsid);
在調試器,CLSID顯示爲{000AFC9A-3347-D4F8-8EE5-D1119D470060}
。對我來說這太類似了,不太對,但這不是我可以自動檢查的東西...我們有D4F8和3347,9D47,但E58E變成8EE5等。
有沒有我能理解的方法爲什麼會發生這種情況,還有一種方法可以讓他們看起來相同?
編輯 澄清一些邊跟蹤,我檢查,並在Windows註冊表中和我們的註冊腳本CLSID是作爲{D4F83347-E58E-11d1-9D47-006008098294}
- 所以在我的uuid(...)
的問題是不相關的,我認爲。
這也是我們如何在我們的reg-scripts中展示它的。例如我檢查了註冊表和'HKEY_CLASSES_ROOT \ myProgId \ CLSID = {D4F83347-E58E-11d1-9D47-006008098294}',即我從我的代碼發佈的相同格式。那麼它似乎是正確的,但是然後以其他格式返回。僅供參考,我們使用progIds作爲字符串來動態加載東西,但它是一個很大的舊客戶端 - 服務器系統,其歷史遺失了起源:) –
好吧,只需使用Regedit.exe查看並檢查寫入的實際值即可。如果它不匹配,那麼要麼忘記重新註冊DLL,要麼必須調試註冊碼。 –
根據我之前的評論,來自regedit的_IS_。這是我們使用_everyehere_的格式,而MSVC++調試器以這種其他格式顯示'CLSIDFromProgID()'的結果。其實 - 這可能只是一個調試問題,它如何呈現GUIDS? –