2010-03-13 78 views
3

我有一個在Internet Explorer中使用JavaScript加載的ActiveX控件。它需要在Vista和Win7的UAC下以中等完整性運行。這是用Visual Studio編譯的C/C++編寫的。使用提升的權限在Internet Explorer中加載ActiveX DLL

提升權限的一種方法是創建可請求中等完整性級別的代理進程。但是,對於這個項目來說,這不是一個實際的解決方案。我真的需要ActiveX控件本身運行提升。

我的問題是:最簡單的方法是什麼?我可以將項目的構建選項更改爲exe,並使用COM進程間連接系統自動處理通信,還是需要更復雜?我是否需要做任何複雜的事情,比如手動調用CreateProcess並創建一些代理,或者它可以作爲一個提升自身的ActiveX exe工作?

回答

3

它主要取決於您的ActiveX控件的功能,如何將其嵌入頁面以及如何實現。

最簡單的方法可能是將其作爲服務器EXE實施,並根據需要進行註冊,然後授予可執行權限以在中等運行Low Rights Elevation Policy

如果你不想去那麼遠,你可以寫一個簡單的自定義外的過程服務器再次您註冊這和你實現自己的IClassFactory的來代理創建請求到現有的DLL。您甚至可以爲現有對象添加一個AppID鍵,並指定它是一個DllSurrogate雖然(註冊爲COM +應用程序除外),但您可能無法輕鬆地強制在代理中創建對象(因爲默認設置爲IE在創建將首先接受進程內註冊的對象時指定CLSCTX_ALL)。

當然畢竟,如果你的代碼對於它的位置做了太多的假設,或者使用任何非代理接口,它可能無法正常工作。

+0

這是否也適用於OCX ActiveX窗體? – Ghigo 2014-03-05 12:29:01

相關問題