Virtual machine 在虚拟机内部运行的进程能否获取在虚拟机外部运行的进程的信息?

Virtual machine 在虚拟机内部运行的进程能否获取在虚拟机外部运行的进程的信息?,virtual-machine,Virtual Machine,假设我运行的Windows7有两个主要进程,我称之为V和p V是运行另一个Windows7实例的虚拟机,而p是我想要了解的进程,两者都在“顶级”操作系统上 Windows 7 inside V运行的进程C是否可以从V中获取有关进程(如p)的信息?换句话说,在虚拟机内运行的进程是否可以获得有关同时维护虚拟机进程的操作系统运行的进程的任何信息?我觉得它将依赖于虚拟机进程的能力,如果它没有被编程来专门检索这些信息,那么它将不可能 我读过另一个话题,关于检测进程是否由虚拟机运行的困难。有些人认为这是不可

假设我运行的Windows7有两个主要进程,我称之为V和p

V是运行另一个Windows7实例的虚拟机,而p是我想要了解的进程,两者都在“顶级”操作系统上

Windows 7 inside V运行的进程C是否可以从V中获取有关进程(如p)的信息?换句话说,在虚拟机内运行的进程是否可以获得有关同时维护虚拟机进程的操作系统运行的进程的任何信息?我觉得它将依赖于虚拟机进程的能力,如果它没有被编程来专门检索这些信息,那么它将不可能

我读过另一个话题,关于检测进程是否由虚拟机运行的困难。有些人认为这是不可靠或不可能的。我不确定是否有一个标准的方法来找出这一点,我相信这篇文章大约是4或5年前


那么,这可以通过进程C来完成,还是需要更多的标准例程来完成这项任务?

我不相信在虚拟机管理器(例如,VMWare等)下运行的操作系统是可能的直接访问与主机操作系统相关的信息,因为默认情况下,大多数虚拟机管理器尝试完全隔离主机和来宾系统

也就是说,大多数虚拟机管理器都有允许虚拟机共享数据并与主机系统通信的机制。通过使用这些机制,主机操作系统可以向客户机传递有关自身的信息

选项1:共享文件 通过主机和来宾之间的共享网络,可以让主机系统将信息写入共享位置的文件,并让来宾使用
CreateFile
和UNC路径(例如
\\host\sharename\file.txt

选项2:通过套接字或命名管道进行数据传输 主机和来宾之间的共享网络将允许您使用或API创建TCP或UDP套接字,或创建可通过其交换数据的命名管道

这种方法将涉及在主机应用程序上运行的服务器应用程序,该应用程序将您要查找的进程信息写入套接字或管道,运行客户端进程的来宾系统可以在其中读取这些信息

选项3:远程Windows Management Instrumentation(WMI)查询 WMI提供了获取信息和与windows操作系统的许多方面进行交互的标准方法,包括有关进程的信息

这可能是最复杂的选项,因为默认情况下WMI不接受来自远程主机(即您的VM)的查询,因此主机需要允许远程WMI查询

一旦配置好WMI,就可以通过WMI命令行客户端(
wmic.exe
)轻松使用它,因此您可以通过如下查询调用它:

在本例中:

  • %HOST\u NAME%
    是承载Windows 7虚拟机的系统的名称
  • %TARGET\u PROCESS%
    是所需进程的进程名称
    关于
wmi\node:%HOST\u NAME%进程,其中NAME='%TargetProcess%'获取可执行路径

此特定查询获取%TargetProcess%的可执行路径,但根据文档1的文档,还有更多属性可用

选项4:共享剪贴板 一些虚拟机管理器允许来宾系统访问主机的剪贴板,以便在来宾系统和主机上运行的应用程序之间交换信息

我很感激这可能是最不传统的选择,但您可以使用将流程信息写入主机的剪贴板,然后将信息读入来宾系统上的流程


1NB:尽管
Win32\u进程
类文档在标题大小写(
ExecutablePath
)中列出了属性,但我发现它们只有在
wmic
查询中使用小写(
ExecutablePath
)时才能正常工作

我认为,在虚拟机管理器(如VMWare等)下运行的操作系统不可能直接访问与主机操作系统相关的信息,因为默认情况下,大多数虚拟机管理器试图完全隔离主机和来宾系统

也就是说,大多数虚拟机管理器都有允许虚拟机共享数据并与主机系统通信的机制。通过使用这些机制,主机操作系统可以向客户机传递有关自身的信息

选项1:共享文件 通过主机和来宾之间的共享网络,可以让主机系统将信息写入共享位置的文件,并让来宾使用
CreateFile
和UNC路径(例如
\\host\sharename\file.txt

选项2:通过套接字或命名管道进行数据传输 主机和来宾之间的共享网络将允许您使用或API创建TCP或UDP套接字,或创建可通过其交换数据的命名管道

这种方法将涉及在主机应用程序上运行的服务器应用程序,该应用程序将您要查找的进程信息写入套接字或管道,运行客户端进程的来宾系统可以在其中读取这些信息

选项3:远程Windows Management Instrumentation(WMI)查询 WMI提供了获取信息和与windows操作系统的许多方面进行交互的标准方法,包括有关进程的信息

这可能是最复杂的选项,因为默认情况下WMI不接受q