C# · 12月 31, 2021

c# – 如何在IE保护模式下访问AppData(来自Managed BHO)

我在C#中编写一个IE扩展(BHO).当以保护模式运行(IE的新的UAC兼容模式,强制所有扩展以低完整性运行)时,它失败,因为它无法访问appdata文件夹中的user.config.

有没有办法标记文件可读性较低的完整性过程?

否则,是否有办法强制BHO运行在中等程度的诚信?

否则,有没有办法在低完整性文件夹中创建一个低完整性符号链接,指向AppData中的中等完整性文件?

否则,是否有办法强制应用程序在LocalLow文件夹中使用user.config文件?如何在.net中获取此文件夹的路径(它没有列在Environment.SpecialFolder下)?使用运行XP的用户或关闭保护模式的用户将不会丢失所有的user.config数据?

解决方法 有一种方法不是特别优雅,但是您可以启动具有中级完整性的另一个(代理)进程,这可以做到“脏工作”,并使用IPC与之通信.为了使您的生活更轻松,我建议您使用套接字进行通信,因为它们不需要安全检查,当您在不同完整性级别的进程之间进行通信时,这可能会很棘手.

为了在生成新进程时跳过UAC警告,您可以修改BHO注册脚本,并添加几个注册表值,这将使IE无条件地将新进程升级到中级.

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