我正在執行我的第一個進程外COM服務器(我的第一個COM服務器就是這個問題)。我已按照步驟編寫IDL文件,生成代理/存根DLL的代碼,編譯DLL並註冊它。用於進程外COM服務器的註冊表項
當我檢查的註冊表項,我有
- 名爲
HKEY_CLASSES_ROOT/Interface/<GUID>
的關鍵,其vaue是(說)IMyApp
和 - 名爲
HKEY_CLASSES_ROOT/Interface/<GUID>/ProxyStubClsid32
的關鍵,它的值是<GUID>
,即相同的值作爲鍵名
我不明白的第二個關鍵的價值如何能同<GUID>
值我n個鍵的名字,因爲我目前的理解是,
- 在
HKEY_CLASSES_ROOT/Interface/<GUID>
,GUID是接口 ID - 的值
ProxyStubClsid32
不是接口ID,但類 ID參照實現上述接口組件 - 的
HKEY_CLASSES_ROOT/CLSID/<GUID>/InprocServer32
(其中GUID是上述類 ID)指向代理DLL值
那麼,如果一個是接口ID,另一個是類ID,那麼HKEY_CLASSES_ROOT/Interface/<GUID>/ProxyStubClsid32
的值如何能保持相同的值GUID?
編輯:我仍然希望爲這個答案。簡而言之:由於一個組件和一個接口是兩個不同的東西,同一個ID如何用於兩者?
你爲什麼不找'ProxyStubClsid32'在註冊表中找到現有的COM類,以便該值看到佈局的細節?更不用說[MSDN解釋佈局](http://msdn.microsoft.com/en-us/library/windows/desktop/ms688573%28v=vs.85%29.aspx)。 –
因爲微軟這樣設計的。 – Wug
@Roman R:COM類是我要寫的服務器,所以它甚至沒有註冊 – Dabbler