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

有什么方法可以将文件标记为完整性较低的进程可读?

如果失败,是否有某种方法可以迫使BHO以中等级别的完整性运行?

如果失败,是否有某种方法可以在低完整性文件夹中创建低完整性符号链接(symbolic link),该链接指向AppData中的中完整性文件?

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

最佳答案

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

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

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

09-30 15:10
查看更多