首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用c# (ProcessStartInfo信息)的ProcessStartInfo程序不起作用

使用c# (ProcessStartInfo信息)的ProcessStartInfo程序不起作用
EN

Stack Overflow用户
提问于 2020-11-06 08:28:54
回答 1查看 171关注 0票数 0

我试图使用一个小型的OpenVPN程序打开一个c#连接。

下面是我使用的代码。

代码语言:javascript
复制
static void Main(string[] args)
{
    Process rs = new Process();
    var netCredential = new System.Net.NetworkCredential("User", "PWD", "Domain");
    System.Environment.CurrentDirectory = ".\\";
    ProcessStartInfo info = new ProcessStartInfo
    {
        FileName = "c:\\programme\\openvpn\\bin\\openvpn.exe",
        Arguments = "--config c:\\programme\\openvpn\\config\\NAS-Name.ovpn",
        UserName = netCredential.UserName,
        Domain = netCredential.Domain,
        Password = netCredential.SecurePassword,
        UseShellExecute = false,
        //RedirectStandardError = true,
        //RedirectStandardOutput = true,
        //CreateNoWindow = true,
        WorkingDirectory = Path.GetDirectoryName("c:\\programme\\openvpn\\bin\\openvpn.exe")
    };
    var p = Process.Start(info);
}

这段代码确实有效,但我只在计算机上编译了它。

在我们的服务器(Win server 2019)上,我得到了错误:

未处理的异常: System.Diagnostics.ProcessWithCreateProcess(ProcessStartInfo startInfo)在System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start() at ConnectOpenVPN.Program.Main(String[] args)在C:\User\path\to\Program.cs:Zeile 43中System.ComponentModel.Win32Exception:System无法找到文件

我不明白错误信息的最后一行是从哪里来的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 09:00:24

我猜你是在用德国窗户或类似的东西。

请注意,windows资源管理器中文件路径的显示值不能反映真实路径,请参阅图片。

代码语言:javascript
复制
C:\Programme -> C:\Program Files

您可以通过单击地址栏来显示真正的路径。

尝试:

代码语言:javascript
复制
static void Main(string[] args)
    {
        Process rs = new Process();
        var netCredential = new System.Net.NetworkCredential("User", "PWD", "Domain");
        Environment.CurrentDirectory = ".\\";
        var vpnConfigPath = Path.Combine(
           Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
           "openvpn", "config", "NAS-Name.ovpn");
        var vpnPath = Path.Combine(
           Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
           @"openvpn","bin","openvpn.exe");
        ProcessStartInfo info = new ProcessStartInfo
        {
            FileName = vpnPath,
            Arguments = $"--config \"{vpnConfigPath}\"",
            UserName = netCredential.UserName,
            Domain = netCredential.Domain,
            Password = netCredential.SecurePassword,
            UseShellExecute = false,
            //RedirectStandardError = true,
            //RedirectStandardOutput = true,
            //CreateNoWindow = true,
            WorkingDirectory = Path.GetDirectoryName(vpnPath)
        };
        var p = Process.Start(info);
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64711161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档