Tag: openvpn

C# – 干净地关闭OpenVPN

我们编写了一个应用程序,它位于控制OpenVPN的托盘中,作为更大应用程序的扩展。 如果在命令行上运行openvpn.exe,可以按F4关闭它。 我们需要从C#发送相同的按键,但您只能将字符串值发送到StandardInput。 我们被迫杀死OpenVpn以关闭它,这似乎在Vista上偶尔引起BSOD …… 这是我在MSDN上发布的post的链接,它也描述了这个问题: MSDN论坛 有谁知道如何使用StandardInput向进程发送特殊击键? 或者更简洁地关闭OpenVPN的解决方法? 更新: 传递给StandardInput.Write()时,以下内容不起作用,F1键在此示例中: ConsoleKey.F1 “\ x70”(F1的hex值) Convert.ToChar((INT)ConsoleKey.F1) 我们已经正确地重定向输入/输出,因为我们可以成功地将用户名/密码传递给OpenVPN而没有任何问题。 更新2:在OpenVPN的一些命令行选项文档中找到这个: –service exit-event [0 | 1]当在这样的环境中由另一个程序自动执行OpenVPN时,应该使用它,以便不能通过显示器或键盘与用户交互。 通常,最终用户永远不需要显式使用此选项,因为当给定的OpenVPN配置作为服务运行时,OpenVPN服务包装器会自动添加该选项。 exit-event是Windows全局事件对象的名称,OpenVPN将持续监视此事件对象的状态,并在发出信号时退出。 第二个参数表示退出事件的初始状态,通常默认为0。 可以使用相同的exit-event参数同时执行多个OpenVPN进程。 在任何情况下,控制过程都可以发出退出事件的信号,导致所有这样的OpenVPN进程退出。 我如何在C#中使用它? “退出事件”是否表明他们正在提及Mutex?