Использование Песочница в качестве примера того, чего, я думаю, вы хотите достичь в некоторой степени. ИМХО, вы не сможете сделать это в чистом управляемом коде.
Если вы хотите иметь возможность ограничивать действия и эффект приложения независимо от того, является ли оно управляемым, нативным или даже Java-приложением. Это означает, что вам нужно будет отслеживать каждое действие, предпринимаемое приложением, и предпринимать соответствующее действие, чтобы убедиться, что оно не влияет на вашу систему. Соответствующее действие может означать, что вы перенаправляете запись приложения в другое место на диске, записываете виртуальный реестр, чтобы реальный реестр не затрагивался и т. Д. И т. Д. Все это потребует много работы низкого уровня, а управляемый код не предоставить сегодня.
Заметьте, я сказал, что чисто управляемый код, вы, конечно, можете использовать Interop Services и т. Д., Чтобы воспользоваться неуправляемой реализацией определенных областей кода, или вы можете использовать управляемый C ++. Однако, в зависимости от точных деталей того, что вы хотите, чтобы ваша песочница выполняла, вам, вероятно, потребуется реализовать драйвер режима ядра, чтобы обеспечить достаточную виртуализацию среды для приложений в пользовательском режиме из песочницы.