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

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

Есть ли способ отметить файлы, которые можно читать с помощью процессов с более низкой целостностью?

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

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

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

Ответ 1

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

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

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

Ответ 3

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

Ответ 4

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

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