2009-11-20 104 views
3

我已經制作了一個ActiveX控件,並且已經制作了它的.cab文件,用於在使用Internet Explorer的客戶端計算機上進行自動安裝。它在Windows XP中工作正常, Windows Vista和Windows 7的安裝被UAC(用戶帳戶控制)阻止,當我禁用它時,所有的東西都正常工作......我用開發環境證書籤署了我的.cab文件...什麼是方式來解決這個問題..我不想告訴用戶禁用他們的UAC模塊...Windows Vista和7上的.cab文件(ActiveX)安裝問題

+0

也許發佈您的清單,以便我們可以查找錯誤? – 2009-11-20 19:43:27

+0

你是在詢問有關.inf文件的問題,你的意思是什麼? – 2009-11-23 08:11:27

+0

我注意到一件事,當我右鍵單擊Internet Explorer並單擊以管理員身份運行時,每件事情都很好...... – 2009-11-23 10:38:12

回答

1

這很可能是因爲您試圖在HKEY_LOCAL_MACHINE中註冊控件,而這是ATL中的默認設置。如果您將控件更改爲在HKEY_CURRENT_USER中註冊(當啓用UAC並且您未升級時,註冊表的唯一部分可訪問),則應該沒問題。

如果你正在使用VS2008和ATL,你可以通過調用做到這一點:

AtlSetPerUserRegistration(perUser);

在舊版本中,你需要更多一點的黑客攻擊的。下面是我們用來解決FireBreath問題的一類,跨瀏覽器的插件框架,我幫助維護:

http://code.google.com/p/firebreath/source/browse/src/ActiveXPlugin/axutil.cpp http://code.google.com/p/firebreath/source/browse/src/ActiveXPlugin/axutil.h

,那麼你就必須把:FbPerUserRegistration perUser(true);在你的DllRegisterServer和DllUnregisterServer入口點。

或者(我不使用.cab安裝,所以我沒有嘗試過),但是msdn上有一個文檔討論瞭如何修改.cab安裝來執行此操作,該操作不需要修改你的控制:

http://msdn.microsoft.com/en-us/library/dd433049%28VS.85%29.aspx

另一個要點,你可以使用Process Monitor來查看正在使用在您註冊控制哪些鍵;它需要一些練習擺弄過濾器,但是一旦你掌握了它,這並不壞。如果您正在寫入HKCR(HKEY_CLASSES_ROOT),默認情況下將把東西放在HKEY_LOCAL_MACHINE/Software/Classes中。你想做什麼(以避免沒有管理員權限的問題)是把鍵放在HKEY_CURRENT_USER/Software/Classes中。

希望有幫助