當創建通過ATL一個COM對象,默認.RGS文件始終註冊對象HKCR:如果該對象被寫入到註冊表的第一爲什麼ATL COM註冊默認爲HKCR
HKCR
{
...
}
時間寫入HKCR相當於寫給HKLM,這會使所有用戶都可以看到全局對象。
這似乎是從自HKCR/HKLM註冊表維護站立點相當貧窮的想法將很快由機器上的任何用戶,從而放慢訪問的所有用戶安裝的任何COM對象炸燬。此外,包含COM對象的任何部署模塊都必須在UAC上請求Windows上的管理員提升,這會對可部署性產生不利影響。那麼爲什麼ATL/COM這樣設計?
本文建議爲了在HKCU(http://blogs.msdn.com/b/jaredpar/archive/2005/05/29/423000.aspx)下注冊COM對象,必須更新DllRegisterServer。如果我們只是在.rgs文件中將HKCR更改爲HKCU,爲什麼它不起作用? ATL會忽略它嗎?如果是這樣的話,爲什麼它堅持使用HKCR?