Wenn Sie nur laufen verwalteten Code wollten, ist es relativ einfach, eine Sandbox-Umgebung unter Verwendung einen AppDomain erstellen w/einen eingeschränkten Berechtigungssatz:
PermissionSet ps = new PermissionSet(PermissionState.None);
// ps.AddPermission(new System.Security.Permissions.*); // Add Whatever Permissions you want to grant here
AppDomainSetup setup = new AppDomainSetup();
Evidence ev = new Evidence();
AppDomain sandbox = AppDomain.CreateDomain("Sandbox",
ev,
setup,
ps);
sandbox.ExecuteAssembly("ManagedAssembly.exe");
Aber sobald man die Tür öffnen, um nicht verwaltete/unsicher Code alle Wetten sind aus, und es wird sehr schwierig, 3rd Party Code zu sichern. Wie bereits erwähnt, müssen Sie grundsätzlich einen Shim zwischen dem ausführenden Code und dem Betriebssystem erstellen, um dessen Möglichkeiten einzuschränken, es sei denn, es reicht aus, es als eingeschränkten Benutzer auszuführen und sich allein auf ACLs/UAC zu verlassen, um Sie zu schützen.
HINWEIS: Dieses Codebeispiel ist kein funktionierendes Beispiel, sondern nur eine Vorstellung davon, wie der Code aussehen würde. Etwas Finagling w/Evidence und AppDomainSetup wird wahrscheinlich notwendig sein, und Sie sollten sicherlich das recherchieren/testen, was die Sicherheitsimplikationen angeht. Hier ist ein guter Artikel zum Thema: http://msdn.microsoft.com/en-us/magazine/cc163701.aspx
Sie sagten über die Umleitung zu einer anderen Registrierung oder Speicherort der Festplatte. Wie wäre es mit der vollständigen Blocknutzung der Registry, und nicht mit Umleitung kümmern? Wird es einfacher sein? Weil diese Anwendungen keine dieser Funktionen benötigen. Ich möchte sie nur blockieren. – SuitUp
@ SuitUp, während dieser vielleicht einfacher der gleiche oder ein ähnlicher Mechanismus noch benötigt wird, um die Anrufe abzufangen und sie zu verfehlen. Die Vereinfachung, die von Bedeutung ist, besteht darin, dass Sie die Registrierung usw. nicht virtualisieren müssen, aber die Komplexität der Überwachung ist immer noch vorhanden. Sie können eine Bibliothek wie Detours für das Abhören verwenden, aber um ehrlich zu sein, bezweifle ich, dass dies Ihnen eine robuste und zuverlässige Sandbox-Lösung gibt. Natürlich gehe ich davon aus, dass Sie eine vollständige zuverlässige und sichere Lösung benötigen, die mehr als nur Abhören erfordert . –
Sie Annahme ist richtig. Kannst du mir ein paar technische Details geben? – SuitUp