10

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

是否有某种方法可以标记低完整性进程可以读取文件?

如果做不到这一点,是否有某种方法可以强制 BHO 以中等完整性运行?

如果做不到这一点,是否有某种方法可以在指向 AppData 中的中等完整性文件的低完整性文件夹中创建低完整性符号链接?

如果做不到这一点,是否有某种方法可以强制应用程序使用 LocalLow 文件夹中的 user.config 文件?如何在 .net 中获取此文件夹的路径(未在 Environment.SpecialFolder 下列出)?我是否能够在不丢失所有 user.config 数据的情况下退回运行 XP 或关闭保护模式的用户?

4

4 回答 4

7

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

为了在生成新进程时跳过 UAC 警告,您可以修改 BHO 注册脚本并添加一些注册表值,这些值将通知 IE 以静默方式将新进程提升到中等级别。

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

于 2010-01-18T23:28:33.993 回答
1

我将从Protected Mode Internet Explorer Reference开始。

于 2010-03-26T18:05:07.087 回答
0

我建议您编写自己的 SettingsProvider,将文件保存在 System.IO.IsolatedStorage 中。

于 2010-01-08T19:31:59.577 回答
0

在 RegisterBHO 期间,您将获得一次性特权访问。之后,您处于保护模式。

如果您需要在 BHO 运行期间更改长期存储,我发现注册表是最佳位置。您的更改将仅对您可见,但它们将持续存在。

于 2012-04-05T21:25:07.290 回答