Проблема вот в чем. Я компилирую С# код в Runtime. Необходимо выставить полученой сборке ограниченные права: запретить удаление файлов с жесткого диска. Вот код настройки прав:
PolicyLevel^ SecurityLevel = PolicyLevel::CreateAppDomainLevel();
// Заполнить разрешения
PermissionSet^ Permissions = gcnew PermissionSet(PermissionState::None);
Permissions->AddPermission(gcnew SecurityPermission(SecurityPermissionFlag::Execution));
Permissions->AddPermission(gcnew UIPermission(PermissionState::Unrestricted));
Permissions->Demand();
// Установить состояние полиции
SecurityLevel->RootCodeGroup->PolicyStatement = gcnew PolicyStatement(Permissions);
AppDomain::CurrentDomain->SetAppDomainPolicy(SecurityLevel);
А вот код компиляции:
static Assembly^ CompileAssembly(String^ Source)
{
// Инициализировать компиляторы
CSharpCodeProvider^ pProvider = gcnew CSharpCodeProvider();
CompilerParameters^ pParams = gcnew CompilerParameters();
pParams->GenerateExecutable = false; // Указать, что необходим *.dll
pParams->GenerateInMemory = true;
#if defined(DEBUG) | defined(_DEBUG)
pParams->IncludeDebugInformation = true;
#else
pParams->CompilerOptions = "/optimize";
#endif
// Добавить необходимые модули
pParams->ReferencedAssemblies->Add("ScriptEngine.dll");
pParams->ReferencedAssemblies->Add("System.Windows.Forms.dll");
// Откомпилировать
CompilerResults^ pResult = pProvider->CompileAssemblyFromSource(pParams, Source);
// Если были ошибки
if (pResult->Errors->Count > 0)
throw gcnew Exception("Script compile error: " + ErrorsToString(pResult->Errors));
return pResult->CompiledAssembly;
}
Подскажите пожалуйста что нужно сделать чтобы описанные права были применены к скомпилированному коду.