C# WinForms PING 在调试器中使用命令行参数工作,但在手动启动时则不工作

本文关键字:工作 启动 参数 调试器 PING WinForms 命令行 | 更新日期: 2023-09-27 18:33:23

如果我在没有命令行参数的情况下启动我的应用程序,然后提供一台要连接的计算机,一切正常。

如果我使用命令行参数配置调试模式并启动应用程序,它可以正常工作。

如果我在 Visual Studio 之外使用命令行参数启动应用程序,则会出现问题......

如果我不 Ping 机器以确保它在那里(通过命令行传递(,通过注释掉这样做的代码,那就没有问题了......

如果我将其保留为ping机器的代码,则从带有参数的命令行运行时出现问题...

如果我在 AD 中搜索机器,我会遇到同样的问题......

我从ping收到的错误似乎是DNS问题,因为它返回未找到主机。

我从AD检查中得到的错误是找不到网络路径。

我在进行检查之前启动了一个"MessageBox.Show("''"+Host''"''"(;",并且传递的参数是正确的。

有什么想法吗?

我正在运行Visual Studio 2015并使用AnyCPU和.Net 4.6.1进行编译

这是我的PingComputer和ComputerExistsInAD代码:

    public static bool PingComputer(string SystemName, int Timeout = 5000)
    {
        try { return (new Ping()).Send(SystemName, Timeout).Status == IPStatus.Success; } catch { }
        return false;
    }
    public static bool ComputerExistsInAD(string SystemName)
    {
        try
        {
            PrincipalContext Context = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);
            ComputerPrincipal Principal = new ComputerPrincipal(Context);
            Principal.Name = SystemName;
            PrincipalSearcher Searcher = new PrincipalSearcher();
            Searcher.QueryFilter = Principal;
            return Searcher.FindOne() != null;
        }
        catch { }
        return false;
    }

C# WinForms PING 在调试器中使用命令行参数工作,但在手动启动时则不工作

似乎是 .Net 4.6.1 的问题... 我回到了 4.5.2,现在它可以工作而无需任何其他更改......