有没有办法获取在本地虚拟机上运行的进程列表?

时间:2011-07-11 19:28:10

标签: c# .net process virtual-machine system.diagnostics

我在Windows 7上运行了一个名为“VirtualXP-12345”的虚拟机。我尝试使用

    System.Diagnostics.Process.GetProcesses("VirtualXP-12345")

来自主机,但不起作用。我刚刚得到InvalidOperationException(“无法连接到远程计算机。”)。

我正在尝试编写一个程序,用于检查特定进程是否在PC上运行,包括同时在该计算机上运行的所有虚拟机。它在本地非虚拟机上使用Pocess.GetProcesses()工作正常,但是我需要确定进程是否在本地计算机上的任何位置运行,因为它需要关闭才能更新正在使用的文件。

3 个答案:

答案 0 :(得分:1)

默认情况下,您无法连接到Windows 7计算机并获取进程列表。尝试关闭VM中的firware,看看是否有帮助。

答案 1 :(得分:1)

根据文档,您正在使用正确的API调用来获取另一台计算机上的进程(虚拟与否无关紧要)。

您收到的错误指出这是一个连接问题。要解决这个问题,您应该首先检查:

  • 您的主机可以将名称映射到IP地址(使用ping测试)。
  • 您有基本的IP连接(使用ping测试)。
  • 您的虚拟机允许端口445上的入站连接,这是所有Windows核心网络功能使用的RPC over TCP / IP。 (简单测试是点击开始 - >运行并输入\\virtualxp-12345

答案 2 :(得分:0)

不太确定,但我认为你不能,因为基本上,虚拟machnie就像你的局域网中的另一台机器。你需要“有人与你合作”。换句话说,您可以通过网络和回溯过程列表调用一些工具。

事实上,在您设置机器时,您可以设置Bridge / NAT / ...网络类型,如果您还记得,就像您想要设置LAN一样。

问候。