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;
}
似乎是 .Net 4.6.1 的问题... 我回到了 4.5.2,现在它可以工作而无需任何其他更改......