gpt4 book ai didi

.net - "AddInProcess.exe has stopped working"可以被抑制吗?

转载 作者:行者123 更新时间:2023-12-02 17:51:38 26 4
gpt4 key购买 nike

我试图通过在其自己的进程中启动的 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到期前点击“关闭”按钮,则测试成功,否则失败。这表明在按下“关闭”按钮之前,该过程不会退出。鉴于我期望进程终止,我如何确保它在不引发此对话框的情况下终止?我已经尝试将我的操作系统设置为“从不检查解决方案”,但对话框仍然出现。将其设置为“自动检查解决方案”可以避免对话框,但最多需要十秒钟,这是不可取的……我宁愿避免操作系统设置。

AddInProcess.exe has stopped working

最佳答案

您可以调用SetErrorMode像这样在插件进程中的某处:

    [Flags]
enum ErrorModes : uint {
SYSTEM_DEFAULT = 0x0,
SEM_FAILCRITICALERRORS = 0x0001,
SEM_NOALIGNMENTFAULTEXCEPT = 0x0004,
SEM_NOGPFAULTERRORBOX = 0x0002,
SEM_NOOPENFILEERRORBOX = 0x8000
}

[DllImport( "kernel32.dll" )]
static extern ErrorModes SetErrorMode( ErrorModes uMode );

var em = SetErrorMode( 0 );
SetErrorMode( em | ErrorModes.SEM_NOGPFAULTERRORBOX | ErrorModes.SEM_FAILCRITICALERRORS | ErrorModes.SEM_NOOPENFILEERRORBOX );

关于.net - "AddInProcess.exe has stopped working"可以被抑制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7459394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com