我們有一個傳統的VB6應用程序,它在啓動時通過下拉最新文件並註冊COM組件來自行更新。這適用於在另一臺計算機上的COM +中註冊的本地(regsvr32)ActiveX COM組件和遠程(clireg32)ActiveX COM組件。無法訪問HKEY_CLASSES_ROOT的遠程DLL註冊
出於安全原因,新的要求阻止我們寫入HKEY_LOACL_MACHINE(HKLM),這在調用regsvr32和clireg32時顯然是默認情況下發生的。
我們想出了一種方法,使用RegOverridePredefKey Windows API方法在HKEY_CURRENT_USER \ Software \ Classes(HKCU)下注冊本地COM組件。這是通過將插入註冊表重定向到HKCU位置來實現的。然後,當COM組件被實例化時,窗口首先查找HKCU,然後在HKLM中查找組件信息。這取代了regsvr32正在做的事情。
我們現在遇到的問題是,當我們嘗試使用clireg32註冊VBR/TLB時,此註冊過程還向HKEY_LOACL_MACHINE添加註冊密鑰。
有沒有辦法將clireg32.exe重定向到註冊組件HKEY_CURRENT_USER? 是否有任何其他方法可以讓我們在客戶端計算機上註冊這些COM +組件並使用有限的安全訪問權限?
我們現在唯一的解決方案是手動將註冊信息寫入註冊表,但這並不理想,並且是一個重大問題。
您的所有評論點擊家中,我們推動他們。我希望答案是一個簡單的舉動.net的東西。所有新的開發工作都是在.net中完成的,但應用程序的其餘部分「正常工作」並修復了錯誤。我們希望保持它的工作原狀,而不是完全重寫。 GUID和接口不會經常更改,我們使用ProcMon/Regmon來查看正在發生的事情,這是我們可以使用的一種選擇。就像你提到的那樣,Reg Free COM似乎不是我們可以使用的替代方案。 – 2010-06-17 03:07:09