Как получить доступ к AppData в защищенном режиме IE (из управляемого BHO)

Я пишу расширение IE (BHO) в C#. При запуске в защищенном режиме (новый режим UAC, совместимый с IE, который заставляет все расширения работать с низкой целостностью), происходит сбой, поскольку он не может получить доступ к user.config в папке appdata.

Есть ли какой-нибудь способ пометить файлы для чтения процессами с более низкой целостностью?

Если это не удастся, есть ли способ заставить BHO работать со средним уровнем целостности?

В противном случае, есть ли какой-нибудь способ создать символическую ссылку с низкой целостностью в папках с низкой целостностью, которая указывает на файл средней целостности в AppData?

В противном случае, есть ли способ заставить приложение использовать файл user.config в папке LocalLow? Как мне получить путь к этой папке в.net (она не указана в Environment.SpecialFolder)? Смогу ли я прибегнуть к помощи пользователей, использующих XP или отключивших защищенный режим, не потеряв все свои данные user.config?

4 ответа

Есть один подход, который не особенно элегантен, но вы можете запустить другой (посреднический) процесс со средним уровнем целостности, который может выполнить "грязную работу" и использовать IPC для связи с ним. Чтобы упростить вашу жизнь, я бы посоветовал вам использовать сокеты для связи, потому что они не требуют проверки безопасности, что может быть непросто, если у вас есть связь между процессами с различными уровнями целостности.

Чтобы пропустить предупреждение UAC при порождении нового процесса, вы можете изменить сценарий регистрации BHO и добавить несколько значений реестра, которые сообщат IE, чтобы незаметно повысить уровень нового процесса до среднего уровня.

Вы можете найти больше информации здесь: http://msdn.microsoft.com/en-us/library/bb250462(VS.85).aspx

Я предлагаю вам написать свой собственный SettingsProvider, который сохраняет файлы в System.IO.IsolatedStorage.

Вы получаете одноразовый привилегированный доступ во время RegisterBHO. После этого вы находитесь в защищенном режиме.

Если вам нужно изменить долговременное хранилище во время выполнения BHO, я обнаружил, что реестр является лучшим местом. Ваши изменения будут видны только вам, но они будут сохраняться.

Другие вопросы по тегам