在运行进程的网络上创建计算机
本文关键字:创建 计算机 网络 运行 进程 | 更新日期: 2023-09-27 17:49:02
我试图在本地网络上找到运行特定进程的计算机。为此,我有以下函数:
private IPAddress GetLocalIP()
{
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
return ip;
}
return IPAddress.Parse("127.0.0.1");
}
private string GetFriendIP()
{
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip != localIP)
{
Console.WriteLine(GetMachineNameFromIPAddress(ip.ToString()));
Process[] allProcs = Process.GetProcesses(GetMachineNameFromIPAddress(ip.ToString()));
Console.WriteLine(GetMachineNameFromIPAddress(ip.ToString()));
foreach (Process p in allProcs)
{
if (p.ProcessName == "You'll Catch A virus")
return GetMachineNameFromIPAddress(ip.ToString()) + ": " + ip.ToString();
}
}
}
return "No PCs connected on network";
}
这段代码显示了错误Couldn't connect to remote machine
在Process.GetProcesses(GetMachineNameFromIPAddress(ip.ToString()))
。虽然如果我将条件更改为ip == localIP
,错误消失,函数返回没有找到机器。这有什么不对吗?
根据msdn,当目标pc运行XP、NT或2000时触发此InvalidOperationException。你也是这样吗?在这种情况下,你不能使用这个方法,因为它被声明为不支持。
否则,您可能需要阅读securityrequirements的文档,尽管相关的错误似乎不会触发您得到的错误消息