【问题标题】:Is there a way to get a list of processes running on a local virtual machine?有没有办法获取在本地虚拟机上运行的进程列表?
【发布时间】:2011-07-11 19:28:10
【问题描述】:

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

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

来自主机,但这不起作用。我只是得到 InvalidOperationException("Couldn't connect to remote machine.")。

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

【问题讨论】:

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

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


【解决方案1】:

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

【讨论】:

  • 关闭防火墙没有帮助。
【解决方案2】:

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

您返回的错误表明这是一个连接问题。要解决这个问题,您应该首先检查:

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

【讨论】:

  • 我禁用了防火墙,这让我可以ping通。我尝试通过转到“\\VirtualXP-12345”来测试端口 445,它提示我输入密码。我试过了
  • 抱歉,我的机器在打字时崩溃了!我尝试使用 VirtualXP-12345\XPMUser 登录名和正确的密码,但这不会让我成功登录到 VM。
  • 您的XPMUser 是否有足够的权限通过网络查看虚拟机?要允许您的程序查看 VM 的进程,您首先需要成功地向 VM 进行身份验证。命令行中的net use 命令可用于建立其他程序可以使用的经过身份验证的连接。
【解决方案3】:

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

事实上,在您设置机器的过程中,您设置了 Bridge/NAT/... 网络类型,如果您记得的话,就像您想设置 LAN 一样。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2014-11-18
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多