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

如何在C#中程序化启动并关闭TunnelBear.exe?

在C#中程序化控制TunnelBear启动与关闭

问题分析

你当前代码的核心问题是Arguments参数错误:已经通过FileName指定了TunnelBear.exe的完整路径,不需要在Arguments里重复写程序名,只需传递对应的命令参数即可。

正确启动TunnelBear的代码

using System.Diagnostics;

var startProcess = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = @"C:\Program Files (x86)\TunnelBear\TunnelBear.exe",
        Arguments = "--on", // 仅传递启动参数,无需重复程序名
        UseShellExecute = false,
        CreateNoWindow = true
    }
};
startProcess.Start();
startProcess.WaitForExit(); // 可选:等待程序启动完成
startProcess.Close();

关闭TunnelBear的两种方法

方法1:使用官方命令行参数

和启动逻辑一致,传递--off参数即可:

using System.Diagnostics;

var stopProcess = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = @"C:\Program Files (x86)\TunnelBear\TunnelBear.exe",
        Arguments = "--off",
        UseShellExecute = false,
        CreateNoWindow = true
    }
};
stopProcess.Start();
stopProcess.WaitForExit();
stopProcess.Close();

方法2:通过进程名终止进程

如果命令行参数无效,可以直接找到并终止TunnelBear进程:

using System.Diagnostics;

// 获取所有TunnelBear进程
var tunnelBearProcesses = Process.GetProcessesByName("TunnelBear");
foreach (var process in tunnelBearProcesses)
{
    process.Kill();
    process.WaitForExit();
    process.Close();
}

注意事项

  • 确保程序运行时有足够权限(比如管理员权限,避免无法控制VPN进程)
  • 如果UseShellExecute设为true,可以不用指定完整路径,但需要确保TunnelBear在系统环境变量的PATH中
  • 若需要捕获输出,可以保留RedirectStandardOutput和RedirectStandardInput,但要注意处理异步读取避免死锁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:07:25