Wie lade ich dynamisch roh Baugruppen, die nicht verwalteten Code enthält? (Unter Umgehung ‚Nicht überprüfbare Code gescheiterte Politik-Check‘ Ausnahme)

StackOverflow https://stackoverflow.com/questions/2945080

Frage

Ich werde ein Beispiel der Verwendung System.Data.SQLite.DLL denen geben, ist ein gemischtes Montage mit unmanaged Code: Wenn ich ausführen diese:

  var assembly= Assembly.LoadFrom("System.Data.SQLite.DLL")

Es werden keine Ausnahmen geworfen, aber wenn ich dies tun:

  var rawAssembly = File.ReadAllBytes("System.Data.SQLite.DLL");
  var assembly = Assembly.Load(rawAssembly);

Die CLR wirft einen Fileloadexception mit "Nicht überprüfbarer Code gescheiterten Politik Prüfung (Ausnahme von HRESULT: 0x80131402).". Sagen wir, ich bin versucht, dies auf ein Kind AppDomain Assembly zu laden, wie kann ich die AppDomain die Sicherheit anpassen mir die Richtlinienüberprüfung passieren zu lassen?

War es hilfreich?

Lösung

Wir sind das Opfer einer miesen Ausnahmemeldung. Lade Baugruppen mit Assembly.Load (byte []), die nicht verwalteten Code enthält, wird nicht unterstützt. Dies ist das Thema dieses Feedback Artikel .

UPDATE: die verknüpfte Feedback Artikel verschwunden ist, gelöscht als Teil der Bereinigung bei VS2012 Release-Zeit. Der einzige Teil davon konnte immer noch erholen ist dieses Fragment, von einer anderen Webseite kopiert:

„[...] wir zulassen, dass nur ILONLY Bilder geladen werden [...] da irgendetwas anderes ist nicht sicher“ -

UPDATE:. Link Fest mit archive.org Sicherungskopie

Andere Tipps

Das Problem ist, dass der CLR nicht die normalen DLL Ladeschritte durchführt - wie Abbilden der DLLs separate Abschnitte in verschiedene Seiten, Einstellen fixups usw. Wenn eine Baugruppe aus rohem Bytes geladen wird, werden diese unformatierten Bytes in dem Speicher abgebildet, wie ist, und nur verwaltet werden Meta-Daten lesen. Keine Menge von Beweismitteln oder die Sicherheitseinstellungen wird dieses Verhalten ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top