有没有办法从另一台计算机上运行任务管理器(而不是进程)的应用程序?有没有机会使用其他电脑的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();
}
答案 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