외부 개발자 커뮤니티에서 개발 한 addin을 통합 할 수있는 WPF 시스템을 만들고 싶습니다. 개발자들에게 보증 할 수 없기 때문에 코드를 안전한 환경에서 실행하고 싶습니다. MAF가 좋은 해결책 인 것 같아 MAF의 보안을 조사하기로 결정했습니다. 각 addon에 대한 정확한 권한 집합을 정의 할 수 있습니다. 매우 좋습니다.보안 및 MAF 추가 기능
그러나 AddOns가 WPF 컨트롤을 반환 할 수있게하려고합니다. 이를 위해서는 WPF 어셈블리를 실행할 수 있어야합니다. 또한 애드온을 관리되지 않는 코드로 실행할 수 없기 때문에 애드온을로드 할 때 설정 한 보안 권한을 재정의 할 수 없습니다.
여기에 문제가 있습니다. 관리되지 않는 코드를 실행할 권한이없는 애드온을로드하면 애드온에서 WPF 컨트롤을 만들 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?
이 문제를 좀 더 테스트하려면 작은 WPF 응용 프로그램을 작성한 후로드하고 두 번째 응용 프로그램에서 실행하려고했습니다. Bellow는 WPF 앱을로드하고 실행하는 코드입니다. 있는 그대로라면 훌륭하게 작동하지만 마지막 AddPermission 문 (UnmanageCode 플래그가있는 문)을 제거하면 WPF 응용 프로그램의 창을 만들 수 없다는 작업이 중지됩니다.
PermissionSet set = new PermissionSet(PermissionState.None);
set.AddPermission(new FileIOPermission(FileIOPermissionAccess.AllAccess, PATH));
set.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
set.AddPermission(new UIPermission(PermissionState.Unrestricted));
set.AddPermission(new SecurityPermission(SecurityPermissionFlag.UnmanagedCode));
Evidence ev = new Evidence();
AppDomain domain = AppDomain.CreateDomain("Test", ev, new AppDomainSetup() { ApplicationBase = PATH }, set);
domain.ExecuteAssembly(PATH);