如何在C#中为外部进程创建沙箱?所谓沙箱,我理解为一种环境,能够防止我从C#启动的进程与其他任何东西(内核、系统变量、系统配置、内存、注册表、磁盘、硬件、位置等)产生干扰。
我希望将可执行文件放在一个地方,并确保这个地方是唯一可以被该进程更改的地方。此外,可执行文件可以使用C、C++、C#等编写。
如果您只想运行托管代码,使用带有受限权限集的AppDomain创建沙盒环境相对容易:
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");