2010-01-02 6 views
10

Ich schreibe eine IE-Erweiterung (BHO) in C#. Bei Ausführung im geschützten Modus (der neue UAC-kompatible Modus von IE, bei dem alle Erweiterungen mit geringer Integrität ausgeführt werden) schlägt der Fehler fehl, da er im appdata-Ordner nicht auf die Datei user.config zugreifen kann.Zugriff auf AppData im geschützten IE-Modus (von einem verwalteten BHO)

Gibt es eine Möglichkeit zu markieren, dass Dateien von Prozessen mit geringerer Integrität lesbar sind?

Fehlt das, gibt es eine Möglichkeit, das BHO zu zwingen, auf mittlerer Integrität zu laufen?

Ist das nicht möglich, gibt es eine Möglichkeit, in den Ordnern mit niedriger Integrität einen Symlink mit geringer Integrität zu erstellen, der auf eine Datei mit mittlerer Integrität in AppData verweist?

Fehlt das, gibt es eine Möglichkeit, die Anwendung zu zwingen, eine Datei user.config im Ordner LocalLow zu verwenden? Wie bekomme ich den Pfad für diesen Ordner in .net (es ist nicht unter Environment.SpecialFolder aufgeführt)? Kann ich auf Benutzer zurückgreifen, die XP ausführen oder den geschützten Modus deaktivieren, ohne alle ihre user.config-Daten zu verlieren?

+0

Das Schreiben von Internet Explorer-Erweiterungen in Managed Code wird aus Gründen der Leistung und Zuverlässigkeit dringend empfohlen. – EricLaw

Antwort

0

Ich empfehle Ihnen, einen eigenen SettingsProvider zu schreiben, der Dateien in System.IO.IsolatedStorage speichert.

7

Es gibt einen Ansatz, der nicht besonders elegant ist, aber Sie können einen anderen (Broker-) Prozess mit mittlerer Integrität starten, der die "Drecksarbeit" ausführen und IPC verwenden kann, um damit zu kommunizieren. Um Ihnen das Leben zu erleichtern, würde ich Ihnen empfehlen, Sockets für die Kommunikation zu verwenden, da sie keine Sicherheitsüberprüfung erfordern, was bei der Kommunikation zwischen Prozessen mit unterschiedlichen Integritätslevels schwierig sein kann.

Um die UAC-Warnung zu überspringen, wenn Sie einen neuen Prozess erstellen, können Sie das BHO-Registrierungsskript ändern und einige Registrierungswerte hinzufügen, die den IE informieren, den neuen Prozess auf stille Ebene zu erhöhen.

können Sie weitere Informationen finden Sie hier: http://msdn.microsoft.com/en-us/library/bb250462(VS.85).aspx#wpm_elebp

+0

lovely, noch ein MS-Hack, um es einer App mit geringem Vertrauen zu ermöglichen, eine App mit höherer Vertrauenswürdigkeit zu starten. – BlackICE

+5

@David: Außer Sie brauchten High Trust, um das BHO an erster Stelle zu installieren. –

+0

Als Besitzer dieser Gegend für mehrere Jahre kann ich Ihnen versichern, dass dies in der Regel die richtige Antwort ist, und es sollte akzeptiert werden. Statt Sockets sollten Sie wahrscheinlich ACL-Named Pipes verwenden, die auch angesichts der in IE10 + eingeführten Einschränkungen des AppContainer-Netzwerks funktionieren. – EricLaw

0

Sie erhalten während RegisterBHO einen einmaligen privilegierten Zugriff. Danach sind Sie im geschützten Modus.

Wenn Sie den Langzeitspeicher während der Laufzeit des BHO ändern müssen, habe ich festgestellt, dass die Registrierung der beste Ort ist. Ihre Änderungen werden nur für Sie sichtbar sein, aber sie werden fortbestehen.

Verwandte Themen