我试图通过在其自己的进程中启动的 MAF 插件中执行潜在的恶意代码来沙箱化:
var x = token.Activate<Ix>(new AddInProcess(), AddInSecurityLevel.Internet);
这似乎运作良好,只是在处理 StackOverflowException 时会显示一个对话框:“AddInProcess.exe 已停止工作”。这使得测试变得非常困难
[TestMethod]
public void TestStackOverflow() {
var host = new Host(Environment.CurrentDirectory
+ "/../../../build/pipeline");
host.Run("foo");
host.Tick();
Thread.Sleep(1000);
host.Monitors.Count.Should().Be(0);
host.Shutdown();
}
如果我在 Sleep 到期之前单击“关闭”按钮,则测试成功,否则失败。这表示在按下“关闭”按钮之前进程不会退出。鉴于我希望进程终止,我如何确保它在不引发此对话框的情况下终止?我尝试将我的操作系统设置为“从不检查解决方案”,但对话框仍然出现。将其设置为“自动检查解决方案”可以避免对话框,但最多需要十秒钟,这是不可取的......我宁愿避免使用操作系统设置。
