2010-01-02 4 views
10

J'écris une extension IE (BHO) en C#. Lorsqu'il est exécuté en mode protégé (le nouveau mode conforme à UAC d'IE qui force toutes les extensions à s'exécuter à faible intégrité), il échoue car il ne peut pas accéder à user.config dans le dossier appdata. Y at-il un moyen de marquer les fichiers sont lisibles par des processus d'intégrité inférieure?Comment accéder à AppData en mode protégé IE (à partir d'un BHO géré)

A défaut, existe-t-il un moyen de forcer le BHO à fonctionner à un niveau d'intégrité moyen?

A défaut, existe-t-il un moyen de créer un lien symbolique à faible intégrité dans les dossiers à faible intégrité qui pointe vers un fichier à intégrité moyenne dans AppData?

A défaut, est-il possible de forcer l'application à utiliser un fichier user.config dans le dossier LocalLow? Comment puis-je obtenir le chemin pour ce dossier dans. Net (il n'est pas répertorié sous Environment.SpecialFolder)? Serai-je en mesure de me rabattre sur les utilisateurs exécutant XP ou qui désactivent le mode protégé, sans perdre toutes leurs données user.config?

+0

L'écriture d'extensions Internet Explorer dans le code managé est fortement déconseillée pour des raisons de performances et de fiabilité. – EricLaw

Répondre

0

Je vous suggère d'écrire votre propre SettingsProvider qui enregistre les fichiers dans System.IO.IsolatedStorage.

7

Il existe une approche qui n'est pas particulièrement élégante mais vous pouvez démarrer un autre processus (courtier) avec une intégrité de niveau moyen qui peut faire le «sale boulot» et utiliser IPC pour communiquer avec lui. Pour vous faciliter la vie, je vous suggère d'utiliser des sockets pour la communication, car ils ne nécessitent pas de contrôle de sécurité, ce qui peut être difficile lorsque vous avez une communication entre des processus ayant des niveaux d'intégrité différents. Pour ignorer l'avertissement UAC lorsque vous créez un nouveau processus, vous pouvez modifier le script d'enregistrement BHO et ajouter quelques valeurs de registre qui informeront IE pour élever silencieusement le nouveau processus au niveau moyen.

Vous trouverez plus d'informations ici: http://msdn.microsoft.com/en-us/library/bb250462(VS.85).aspx#wpm_elebp

+0

belle, encore un autre hack MS pour permettre une application de confiance faible pour démarrer une application de confiance plus élevé. – BlackICE

+5

@David: Sauf que vous avez besoin de confiance élevée pour installer le BHO en premier lieu. –

+0

En tant que propriétaire de cette zone depuis plusieurs années, je peux vous assurer que c'est généralement la bonne réponse, et elle devrait être acceptée. Plutôt que des sockets, vous devez probablement utiliser des canaux nommés ACL, qui fonctionnent même avec les restrictions de réseau AppContainer introduites dans IE10 +. – EricLaw

0

Vous bénéficiez d'un accès privilégié en une fois pendant RegisterBHO. Après cela, vous êtes en mode protégé.

Si vous avez besoin de changer le stockage à long terme pendant l'exécution du BHO, j'ai trouvé que le registre est le meilleur endroit. Vos changements ne seront visibles que pour vous, mais ils persisteront.

Questions connexes