Установка ограниченых прав динамически скомпилированому коду
От: Аноним  
Дата: 21.02.08 08:19
Оценка:
Проблема вот в чем. Я компилирую С# код в 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;        
}


Подскажите пожалуйста что нужно сделать чтобы описанные права были применены к скомпилированному коду.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.