Я видел сторонний код, который делает это; например, Jint позволяет вам писать сценарии JavaScript, которые управляют объектами CLR, но не позволяет любым кодам JavaScript, инициированным кодом, обращаться к файловой системе, Reflection и т. д. с помощью разрешений.
Вы можете прочитать документацию JINT и протыкать их исходный код для получения более подробной информации, но суть его, кажется, это:
PermissionSet myPermissionSet = new PermissionSet(PermissionState.None);
// or some other permission set, depending on your requirements
try {
myPermissionSet.PermitOnly();
// run untrusted code
} finally {
CodeAccessSecurity.RevertPermitOnly();
}
Много вещей, которые я читал говорят, что нужно, чтобы создать sandboxed Appdomain (что-то, с чем я никогда не имел большого успеха), но подход Jint, похоже, работает очень хорошо. Возможно, вам придется следить за тем, как сторонний код запускает статические события, которые будут срабатывать позже, хотя тогда они могут избежать области PermitOnly
.
http://msdn.microsoft.com/en-us/library/bb763046.aspx –
В противном случае вы не можете использовать собственный код на языке C++, который использует winapi напрямую, кроме запуска процесса с учетной записью пользователя, которая ограничивает доступ к файловой системе , –
Вы говорите C# или CPP .. они всегда управляли libs? –