Ich habe vor einiger Zeit gefragt, wie ich den Zugriff auf Plugins einschränken kann (ich möchte verhindern, dass sie auf die Festplatte oder das Netzwerk schreiben) und ich wurde angewiesen, AppDomain . Ich habe gesucht und versucht und versagt, wie man das funktioniert.
Kann jemand etwas Informationen zur Verfügung stellen, damit ich anfangen kann, setzen Sie einfach eine AppDomain, die nicht erlaubt, in die Datei oder das Netzwerk zu schreiben.
Ich denke, das ist was du brauchst, wenn ich deinen Punkt richtig verstehe.
%Vor%Ist das genauer gesagt was du meintest?
Beachten Sie, dass Sie möglicherweise eine Zeichenfolge mit den Pfaden angeben, auf die das Plugin keinen Zugriff haben soll. Sie können dies angeben, wenn Sie die neue Instanz der FileIOPermission-Klasse initialisieren.
Lass es mich wissen, wenn das hilft. : -)
Für .net Framework 4.0 folgen Sie bitte dem folgenden Code von diesem MSDN-Artikel.
Das folgende Beispiel implementiert die Prozedur im vorherigen Abschnitt. In diesem Beispiel enthält ein Projekt namens Sandboxer in einer Visual Studio-Projektmappe auch ein Projekt namens UntrustedCode, das die Klasse UntrustedClass implementiert. In diesem Szenario wird davon ausgegangen, dass Sie eine Bibliotheksassembly heruntergeladen haben, die eine Methode enthält, von der erwartet wird, dass sie wahr oder falsch zurückgibt, um anzugeben, ob es sich bei der von Ihnen angegebenen Nummer um eine Fibonacci-Nummer handelt. Stattdessen versucht die Methode, eine Datei von Ihrem Computer zu lesen. Das folgende Beispiel zeigt den nicht vertrauenswürdigen Code.
%Vor%Das folgende Beispiel zeigt den Sandboxer-Anwendungscode, der den nicht vertrauenswürdigen Code ausführt.
%Vor%Wenn Sie Plugins verwenden, wissen Sie vielleicht etwas über Proxies.
Beim Laden Ihrer Assembly über einen Proxy können Sie die Sicherheitsrichtlinienebene für diese bestimmte Assembly über die LoadAssembly () -Methode angeben, wenn ich mich richtig erinnere. Mit anderen Worten, dies geschieht durch Reflexion.
Ich weiß, dass meine Antwort nicht sehr detailliert ist, aber ich hoffe, dass sie Ihnen eine Vorstellung davon geben wird, wo Sie nach Ihrer Lösung suchen sollten. Ich werde nach weiteren Einzelheiten suchen, damit ich besser helfen kann. =)
Ich hoffe, Sie werden Ihre Ergebnisse teilen, wenn Sie es getan haben.