You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

微软实时保护导致.NET调用Process.Start时主程序锁死问题求助

问题根因

该异常由2023年推送的Windows 10安全累积更新导致,更新修改了Process.Start默认依赖的ShellExecute API执行逻辑,新增的文件关联、安全校验步骤会同步阻塞调用线程,主线程直接调用该方法就会触发主程序无响应。

可行解决方案

所有方案均无需修改客户端设备的组策略,仅需更新集成程序代码即可生效:

  • 方案1:显式关闭ShellExecute调用,改用CreateProcess API启动程序,是兼容性最好的修复方案,代码示例:
// 调整前写法
// Process.Start("notepad.exe");

// 调整后写法
ProcessStartInfo processInfo = new ProcessStartInfo("notepad.exe")
{
    UseShellExecute = false,
    WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System)
};
Process.Start(processInfo);

注意:该方案仅适用于直接启动exe可执行文件的场景,需要启动关联文件、自定义协议的场景请参考后续方案

  • 方案2:将Process.Start调用放到独立后台线程执行,避免阻塞UI主线程:
// 异步调用不占用主线程资源
Task.Run(() =>
{
    Process.Start("notepad.exe");
});
  • 方案3:必须使用ShellExecute能力(启动关联文件、自定义协议等)时,显式关闭错误弹窗减少阻塞逻辑:
ProcessStartInfo processInfo = new ProcessStartInfo("test.txt")
{
    UseShellExecute = true,
    ErrorDialog = false
};
Process.Start(processInfo);

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:27:05