【发布时间】:2012-05-06 12:20:03
【问题描述】:
我想创建一个 AppDomain 并通过它运行一个外部 WPF 应用程序。 主要原因是安全性,因为我想控制外部 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);
而且效果很好。
当我删除权限集中的最后一行(即允许非托管代码运行)时,它停止工作。
如何禁止新的应用程序域运行非托管代码,但仍让 WPF 应用程序运行? (顺便说一句,WPF 应用程序只是一个 File->New WPF 应用程序,因此它不使用任何非托管代码)。
谢谢!
【问题讨论】:
-
它以什么方式停止工作?有任何错误信息吗?
-
我收到一条错误消息,说它无法加载 MainWindow.xaml
标签: .net wpf security unmanaged appdomain