Как получить доступ к 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
Ответ 2
Я бы начал с Справочник по обозревателю защищенного режима.
Ответ 3
Я предлагаю вам написать собственный SettingsProvider, который сохраняет файлы в System.IO.IsolatedStorage.
Ответ 4
В режиме RegisterBHO вы получаете привилегированный доступ с одним выстрелом. После этого вы находитесь в защищенном режиме.
Если вам нужно изменить долгосрочное хранилище во время выполнения BHO, я обнаружил, что реестр - лучшее место. Ваши изменения будут видны только вам, но они будут сохраняться.