Windows 7正在緩存一些COM類信息。較早的操作系統沒有這樣做。操作系統查找HKCU\Software\Classes\CLSID\{GUID}\LocalServer32
值後,會緩存該值,並且不會再查找它。如何防止Windows緩存Com類信息?
當我們更新我們的軟件時,我們將新的更新放置在不同的目錄中,然後更新HKCU\Software\Classes\CLSID\{GUID}\LocalServer32
值以反映新路徑。軟件下次運行時,如果在較早的Windows操作系統下運行,它將使用最新的文件。但是,在Windows 7上,它將繼續使用舊文件,直到操作系統重新啓動。
我運行了進程監視器,發現在Windows 7下,它在第一次讀取後從未再次讀取註冊表項。在較舊的操作系統上,每次都會讀取該密鑰。
我的問題是:有沒有什麼辦法強制Windows 7重新讀取HKCU配置單元中的LocalServer32信息,每次創建一個新的proc COM對象時?
我想你的COM服務器(.exe)在初始化時註冊一些類(CoRegisterClassObject)。你確定它爲所有已註冊的類調用CoRevokeClassObject,並在升級之前退出? – 2012-06-14 12:55:35
從@SimonMourier繼續,舊的過程仍在運行還是退出?如果它仍在運行,那是你的問題。 – Ben 2012-06-20 09:26:47
更新COM註冊後是否重新啓動了PC? – 2013-01-20 06:04:01