在运行进程的网络上创建计算机

本文关键字:创建 计算机 网络 运行 进程 | 更新日期: 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 machineProcess.GetProcesses(GetMachineNameFromIPAddress(ip.ToString()))。虽然如果我将条件更改为ip == localIP,错误消失,函数返回没有找到机器。这有什么不对吗?

在运行进程的网络上创建计算机

根据msdn,当目标pc运行XP、NT或2000时触发此InvalidOperationException。你也是这样吗?在这种情况下,你不能使用这个方法,因为它被声明为不支持。

否则,您可能需要阅读securityrequirements的文档,尽管相关的错误似乎不会触发您得到的错误消息