Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema werden Sicherheitsfragen abgehandelt, die beim Erstellen von dynamischen Assemblys mithilfe der Reflektionsausgabe beachtet werden müssen. Einige Szenarien erfordern bestimmte Berechtigungen. Andere erfordern Berechtigungen, um für generierten Code eingerichtet zu werden. In der folgenden Beschreibung bezieht sich der Begriff "Aufrufer" auf den Ersteller der dynamischen Assemblys und/oder der dynamischen Module.
Szenarien, die bestimmte Berechtigungen erfordern
Die Common Language Runtime erfordert, dass die erstellende Assembly die ReflectionPermissionFlag.ReflectionEmit-Berechtigung besitzen muss, um bestimmte Operationen an AssemblyBuilder-Objekten und ModuleBuilder-Objekten ausführen zu können. Da die Reflektionsausgabe Reflection verwendet, kann die erstellende Assembly ebenfalls eine Berechtigung für die Verwendung von Reflection anfordern.
Einrichten von Berechtigungen für generierten Code
Ein Aufrufer benötigt die entsprechenden Dateiberechtigungen, um eine dynamische Assembly zu speichern.
Aufrufer mit der SecurityPermissionFlag.ControlEvidence-Berechtigung können Beweise für den generierten Code bereitstellen. Diese Beweise werden über eine Richtlinie zugeordnet, um die gewährten Berechtigungen festzulegen.
Jeder Anrufer kann auch den NULL-Beweis zur Verfügung stellen. In diesem Fall erhält die Assembly den Berechtigungssatz des Aufrufers. Dadurch wird sichergestellt, dass der generierte Code nicht über mehr Berechtigungen verfügt als sein Aufrufer.
Nach dem Speichern einer dynamischen Assembly auf der Festplatte werden nachfolgende Ladezugriffe entsprechend den Richtlinien gewährt, die dem Speicherort der Assembly zugeordnet sind. Das heißt, dass die Assembly wie jede andere von der Festplatte geladene Assembly behandelt wird.
Code, der von nur teilweise vertrauenswürdigen Aufrufern generiert wurde, wird immer überprüft. Insbesondere überprüft die Common Language Runtime immer Code, der nicht die SecurityPermissionFlag.SkipVerification-Berechtigung besitzt. Vollständig vertrauenswürdige Aufrufer können die Überprüfung entweder überspringen oder die Überprüfung des generierten Codes anfordern.