我想知道如何找出系统是否已关闭或是否使用其IP地址(考虑到我已获得IP地址列表)。
当前,我有一个控制台应用程序,它将命令作为输入并在命令提示符下执行它,并在控制台上显示输出。
class Program
{
static void Main(string[] args)
{
Process cmdProcess = new Process();
cmdProcess.StartInfo.FileName = "cmd.exe";
cmdProcess.StartInfo.RedirectStandardInput = true;
cmdProcess.StartInfo.RedirectStandardOutput = true;
cmdProcess.StartInfo.CreateNoWindow = true;
cmdProcess.StartInfo.UseShellExecute = false;
cmdProcess.Start();
}
}
答案 0 :(得分:1)
如果机器按照@Paxz的建议回复ping,则可以执行以下操作:
var ping = new Ping();
var pingReply = ping.Send("123.123.123.123");
if (pingReply.Status == IPStatus.Success)
{
}
答案 1 :(得分:1)
您应使用WMI尝试在远程计算机上获取WMI_OperatingSystem
。
如果您能够访问该对象并拥有适当的权限,则还可以调用其Shutdown
方法 1 。
与ping
不同,上述验证您可以连接到计算机,以实际需要实现 2 。
(如果无法通过IP地址连接到WMI,请咨询this question)
1 我想可能存在一种不正常的情况,一方面,您具有某种形式的权限来启动远程关闭,但是另一方面,通过WMI进行此操作的某些方面被阻止,但这确实是对管理员的一种压制-要求您执行管理任务,正确的方法是WMI。
2 ping只是告诉您远程计算机 3 正在正确处理ICMP ECHO。它没有给您任何迹象,表明系统是否能够执行任何其他活动。如果您要通过ping进行“预检查”连接是没有意义的,那么您将继续进行其他需要连接和其他事情才能正常工作的活动。其中,在之间进行“预检查”和对结果采取行动,外部现实可能已经改变。
您将需要编写代码来应对不断变化的网络连接 您正在尝试进行 活动(或远程计算机由于其他原因而关闭等) )。
3 ,没有任何东西可以过滤ICMP ECHO通信。