如何获取另一台计算机的任务管理器的运行程序

时间:2014-07-15 05:53:41

标签: c# windows-applications taskmanager

有没有办法从另一台计算机上运行任务管理器(而不是进程)的应用程序?有没有机会使用其他电脑的IP地址或电脑名称?

这是我的代码,但它只是显示我正在运行的应用程序并每秒更新一次,以查看我是否打开或关闭任何程序。

更新:我使用了模仿,但我仍然得到同样的错误"无法连接到机器"。至于模仿者,我刚刚下载了这个Impersonator

private void Form1_Load(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }

 private void running_process()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("ProcessName");
        dt.Columns.Add("ProcessId");
        using (new Impersonator("adminuser", "", "adminpass"))
        {
            Process[] processes = Process.GetProcessesByName(".", "PCNAME");
           //Process.GetProcesses("192.168.20.120")
            foreach (Process p in processes)
            {
                try
                {
                    if (p.MainWindowTitle.Length > 0)
                    {
                        dt.Rows.Add();
                        dt.Rows[dt.Rows.Count - 1][0] = p.MainWindowTitle;
                        dt.Rows[dt.Rows.Count - 1][2] = p.Id.ToString();
                    }
                }
                catch { }
            }
        }

        listBox1.DataSource = dt;
        listBox1.DisplayMember = "ProcessName";
        listBox1.ValueMember = "ProcessId";
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        running_process();
    }

2 个答案:

答案 0 :(得分:0)

您可以使用Process.GetProcesses("remotecomputername")。还是......

您可以使用名为pslist的工具列出远程计算机上运行的进程。本文介绍了如何:Determine processes running on a remote server with PsList。但为了做到这一点,您需要在远程服务器上具有管理员级别权限。 (我认为这不是问题。因为我不知道如果没有管理员权限你怎么能这样做。)

您无需在计算机中安装该工具。您可以从Sysinternals Live运行它。

 \\live.sysinternals.com\tools\pslist \\remotecomputername

然后你必须Execute command line in C#, get STD OUT results。然后,标记输出并获取所需信息应该是一项微不足道的任务。

答案 1 :(得分:0)

Process [] ipByName = Process.GetProcessesByName(" notepad"," 169.0.0.0");

请参阅链接http://msdn.microsoft.com/en-us/library/1f3ys1f9(v=vs.110).aspx