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

C# UDP接收回调中调用Process启动Subnautica时报进程启动错误

问题原因与解决方案

常见报错原因

  • 路径配置或权限问题:要么目标exe路径拼写错误、包含未转义的特殊字符,要么当前C#程序的运行账户没有该路径的读取执行权限,部分游戏也需要管理员权限才能正常启动
  • 工作目录缺失:Subnautica启动时依赖同目录下的资源、动态链接库等文件,你没有配置WorkingDirectory属性,进程默认会以你的C#程序运行目录作为工作目录,找不到依赖就会启动失败
  • 异步回调线程限制:DataReceived是UDP接收的异步后台线程,部分系统环境下后台线程直接启动进程会有权限上下文限制
  • 重复启动冲突:每次收到UDP数据都会触发启动逻辑,游戏已运行的情况下重复调用Start()也会抛出对应错误

修复方案

按下方代码修改即可,补充了工作目录配置、运行状态校验、异常捕获逻辑:

// 全局变量标记游戏是否已启动,避免重复启动
private static bool _gameStarted = false;

private static void DataReceived(IAsyncResult ar)
{
    UdpClient c = (UdpClient)ar.AsyncState;
    IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
    Byte[] receivedBytes = c.EndReceive(ar, ref receivedIpEndPoint);

    string receivedText = ASCIIEncoding.ASCII.GetString(receivedBytes);
    Console.Write(receivedIpEndPoint + ": " + receivedText + Environment.NewLine);

    c.BeginReceive(DataReceived, ar.AsyncState);
    
    // 游戏已启动就跳过执行
    if(_gameStarted) return;

    var p = new Process
    {
        StartInfo =
            {
                FileName = @"C:\Users\Andrei\Desktop\Subnautica.v63668\Subnautica.exe",
                Arguments = "127.0.0.1 20000",
                UseShellExecute = true,
                // 补充游戏所在目录作为工作目录
                WorkingDirectory = @"C:\Users\Andrei\Desktop\Subnautica.v63668\",
                // 如果需要管理员权限启动,打开下面一行注释
                // Verb = "runas"
            }
    };

    try
    {
        p.Start();
        _gameStarted = true;
        // 可选:监听游戏退出事件,重置启动标记
        p.EnableRaisingEvents = true;
        p.Exited += (s, e) => 
        {
            _gameStarted = false;
            p.Dispose();
        };
    }
    catch(Exception ex)
    {
        // 打印具体错误信息,方便定位剩余问题
        Console.WriteLine($"进程启动失败:{ex.Message},堆栈:{ex.StackTrace}");
    }
}

如果修改后还是报错,可以先手动双击对应路径下的Subnautica.exe确认游戏本身可以正常启动,排除游戏文件损坏的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:54:05