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

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

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

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

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

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


person BlueRaja - Danny Pflughoeft    schedule 02.01.2010    source источник
comment
Писать расширения Internet Explorer в управляемом коде категорически не рекомендуется из соображений производительности и надежности.   -  person EricLaw    schedule 20.08.2013


Ответы (4)


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

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

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

person Mladen Janković    schedule 18.01.2010
comment
Прекрасно, еще один взлом MS, позволяющий приложению с низким уровнем доверия запускать приложение с более высоким уровнем доверия. - person BlackICE; 08.03.2010
comment
@David: За исключением того, что вам нужно было High Trust в первую очередь для установки BHO. - person Billy ONeal; 21.04.2010
comment
Как владелец этого участка уже несколько лет, могу вас заверить, что это в целом правильный ответ, и его следует принять. Вместо сокетов вам, вероятно, следует использовать именованные каналы ACL, которые работают даже с учетом сетевых ограничений AppContainer, введенных в IE10 +. - person EricLaw; 20.08.2013

Я бы начал с Справочника по защищенному режиму Internet Explorer.

person Luke    schedule 26.03.2010
comment
User.config находится в папке с высоким уровнем целостности, это дает вам доступ только к папкам с низким уровнем целостности. - person BlueRaja - Danny Pflughoeft; 27.03.2010

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

person Sheng Jiang 蒋晟    schedule 08.01.2010

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

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

person Eric Hartford    schedule 05.04.2012