2009-10-20 104 views
1

我正在使用Visual C++。我真的只想爲當前用戶註冊DLL,即使用戶是管理員。DLL自注冊:如何爲當前用戶註冊?

因此,我將所有project.rgs引用改爲HKCR。 但是,在使用進程監視器而使用regsvr32來註冊該DLL時,我注意到它仍嘗試創建HKCR\TypeLib\{ ... }。 這發生在撥打CComModule::RegisterServer()的電話上。

這是固有的CComModule?在Visual C++的配置方面,有什麼我不知道的嗎?我知道我可以使用RegOverridePredefKey,但我不想加載更多的DLL,這不是一個非常優雅的解決方案。

回答

2

CComModule::RegisterServer()有一個BOOL第一個參數,指示是否應該註冊類型庫。將其設置爲FALSE,它不會嘗試。

+0

RegisterServer(..)中的BOOL參數是如果要註冊typelib,而不是控制每個用戶。 – 2009-10-20 07:57:25

+0

是的,確切地說。該參數控制是否調用註冊typeplib的代碼。 OP的問題是,在他的.rgs文件被註冊到註冊表後,用於註冊typlib的代碼也會被調用,並在「HKCR \ TypeLib \ {Something}」鍵中滾動。 – sharptooth 2009-10-20 08:09:13

+0

嗯,我不想*註冊它只需要在'HKCU \ Software \ Classes \ TypeLib'中註冊 – known 2009-10-20 16:25:38

0

HKCR未映射到當前用戶註冊表配置單元,如果您真的想爲本地用戶註冊服務器,請使用HKEY_CURRENT_USER\Software\Classes而不是HKCR。