2010-01-02 43 views
10

我在C#編寫的IE擴展(BHO)。當以保護模式運行時(IE的新UAC兼容模式強制所有擴展以低完整性運行),它會失敗,因爲它無法訪問appdata文件夾中的user.config。如何在IE保護模式訪問應用程序數據(從管理BHO)

是否有某種方式來標記文件是由低完整性進程可讀?

做不到這一點,是有一些方法來迫使BHO在中級完整性運行?

如果失敗了,有沒有辦法在低完整性文件夾中創建低完整性符號鏈接,這些文件夾指向AppData中的中等完整性文件?

失敗了,有沒有辦法強制應用程序在LocalLow文件夾中使用user.config文件?如何在.net中獲取此文件夾的路徑(它未列在Environment.SpecialFolder下)?我是否能夠回退運行XP的用戶或關閉保護模式,而不會丟失所有user.config數據?

+0

由於性能和可靠性的原因,強烈建議在託管代碼中編寫Internet Explorer擴展。 – EricLaw 2013-08-20 18:01:32

回答

0

我建議你寫你自己的SettingsProvider在System.IO.IsolatedStorage保存文件。

7

有一種方法不是特別優雅,但您可以啓動另一個(中介)流程,具有中等水平的完整性,可以完成「髒活」並使用IPC與其進行通信。爲了讓您的生活更輕鬆,我建議您使用套接字進行通信,因爲它們不需要安全檢查,當您在不同完整性級別的進程之間進行通信時,這可能會非常棘手。

爲了在產生新進程時跳過UAC警告,您可以修改BHO註冊腳本並添加少量註冊表值,這些註冊表值將通知IE以靜默地將新進程提升到中等級別。

您可以在這裏找到更多的信息:http://msdn.microsoft.com/en-us/library/bb250462(VS.85).aspx#wpm_elebp

+0

可愛,又一個MS黑客允許一個低信任的應用程序來啓動一個更高的信任應用程序。 – BlackICE 2010-03-08 15:02:07

+5

@David:除非你需要High Trust來安裝BHO。 – 2010-04-21 14:50:54

+0

作爲這個地區多年的業主,我可以向你保證,這通常是正確的答案,它應該被接受。您應該使用ACL的命名管道,而不是套接字,即使在面對IE10 +中引入的AppContainer網絡限制時也是如此。 – EricLaw 2013-08-20 17:59:45

0

你得到RegisterBHO期間一次性的特權訪問。之後,您處於保護模式。

如果您需要在BHO運行期間更改長期存儲,我發現註冊表是最好的地方。您的更改只會對您可見,但會一直存在。

相關問題