.NET implementiert ein Sicherheitsmodell namens code access security. Nicht verwalteter Code wird mit den Berechtigungen und Rechten des Benutzers ausgeführt, der die Anwendung startet, selbst wenn der Code zufällig aus bösartigen Quellen stammt.
Der verwaltete Code muss Beweise von seinem Ursprung zur Verfügung stellen; Es gibt verschiedene Möglichkeiten, dies zu tun (z. B. Code wird mit einem bestimmten Schlüssel signiert, Code wurde von einer bestimmten URL heruntergeladen, Code lebt in einem bestimmten Verzeichnis auf der Festplatte usw.). Auf dieser Grundlage werden Assemblies in Gruppen zusammengefasst, für die Richtlinien angewendet werden. Eine Richtlinie kann einer Codegruppe bestimmte Berechtigungen gewähren, hauptsächlich im Hinblick auf den Zugriff auf Systemressourcen (Ausführen von DNS-Suchen, Öffnen von Netzwerkverbindungen, Zugriff auf "isolierten Speicher", Zugreifen auf das lokale Dateisystem (alles oder nur ausgewählte Verzeichnisse) die Registrierung, Zugriff auf Netzwerkfreigaben usw.). Es gibt ein Tool in der Systemsteuerung, mit dem Sie solche Richtlinien definieren können.
Wenn eine Assembly versucht, eine eingeschränkte Operation auszuführen, wird eine Berechtigungsprüfung durchgeführt. Wenn der Zugriff gewährt wird, wird der Vorgang fortgesetzt. Wenn die Überprüfung fehlschlägt, wird eine Ausnahme ausgelöst. Die Überprüfung beinhaltet typischerweise eine Stapelüberquerung (d. H. Alle Anrufer müssen für diese Operation vertrauenswürdig sein), aber es gibt Ausnahmen.
Als Sonderfall kann man einer Baugruppe "Full Trust" zuweisen und alle Berechtigungen gewähren. Obwohl ich den Ausdruck "teilweises Vertrauen" noch nicht gehört habe, würde ich annehmen, dass er sich auf Versammlungen bezieht, die zwar einige Rechte, aber nicht Volles Vertrauen haben.
Bitte haben Sie Verständnis dafür, dass dies nur ein Überblick ist - es gibt viel mehr über die Codezugriffssicherheit zu sagen.
Beachten Sie, dass selbst eine FullTrust-Assembly immer noch durch die Betriebssystemsicherheit eingeschränkt ist. Wenn beispielsweise Benutzer Bob nicht auf Datei Y zugreifen kann, wird auch keine vollständig vertrauenswürdige Assembly in Bobs Benutzerbereich ausgeführt. – RoadWarrior