A managed sandbox implementation that lets developers choose between various levels of security.
NOTE: This code is intended to lay the foundation for creating a secure sandbox, but by default is not fully locked down.
The following resources were used to write this code:
Resource | Usage |
---|---|
MalwareTech | Launching a process in an AppContainer |
pinvoke.net | Various interop stubs |
Practical Sandboxing 1 2 3 | Various sandboxing concepts |
An application is launched in a sandbox using the SandboxedProcess
class, and specifying the various IProtection
implementations applicable for the sandboxing scenario.
var sandboxProcess = SandboxedProcess.Start(
@"c:\foo.exe",
new JobObjectProtection(),
new DesktopProtection(),
new RestrictedTokenProtection(),
new AppContainerProtection());