VMWareVIX是一套自动化测试工具,安装了vmware虚拟机程序的本机可以通过在本机运行vix程序,可以控制虚拟机的系统。比如我在电脑上装了真实系统A,又在A系统上装了vmware?软件,然后安装两个虚拟机B和C,那么在A上用VMware?vix编写程序可以控制B和C。
安装VMware和客户机
①安装WMware:我的安装路径是E:/ProgramFiles/VMware,安装完成后,在计算机C:/ProgramFiles
文件夹下会自动安装VIX,位置位于C:/ProgramFiles/VMware/VMwareVIX,WMwareVIX文件夹下东西正是后续我们需要使用到的
②在WMware中安装ubuntu:我的安装路径就是默认的,安装在了C:/Users/Pan/Documents/Virtual
Machines/Ubuntu文件夹下
VIX使用实例配置讲解
①使用VS建立新的项目,在这里,我的项目命名为Vmware
②在项目中添加两个头文件,vix.h和vm_basic_types.h,将C:/ProgramFiles/VMware/VMwareVIX文件夹下两个相应的文件的内容复制进来。
③将C:/ProgramFiles/VMware/VMwareVIX/Samples文件夹中的powerOn.c文件的内容复制到项目的源文件Vmware.cpp中。这个文件里面有不少地方要改,如下:
文件刚开始的部分,找到如下地方进行配置(powerOn这个试验中,不配置貌似也没问题)
#defineUSE_WORKSTATIO
#ifdefUSE_WORKSTATION
#define?CONNTYPE??VIX_SERVICEPROVIDER_VMWARE_WORKSTATION
#define?HOSTNAME"https://192.168.1.110"?(自己的ip地址)
#define?HOSTPORT0(不用改)
#define?USERNAME"pan"(ubuntu的用户名)
#define?PASSWORD"1"(ubuntu的密码)
配置虚拟机路径,如图修改
vmxpath改成自己相应的ubuntu的安装路径就行了
为项目添加vix的lib和dll
Project-properties-c/c++-general-additionalincludedirectories添加引用文件的文件夹的路径,我的是C:/ProgramFiles/VMware/VMwareVIX,WMwareVIX
Project-properties-linker-general-additionallibrarydirectories添加库文件的文件夹路径,我的是C:/ProgramFiles/VMware/VMwareVIX,WMwareVIX
Project-properties-linker-input-additionaladditionaldependencies添加用到的库文件,添加VixAllProductsDyn.lib
运行项目
配置到现在,基本配置已经完成,但是你运行项目,会报错所找不到VixAllProductsDyn.dll,没关系,这只需要你将C:/ProgramFiles/VMware/VMwareVIX,WMwareVIX文件夹下的VixAllProductsDyn.dll拷贝到你项目的debug文件夹下就行了。
到现在,算是全部大功告成了。
开始想通过命令行的方式控制虚拟机,但总是存在一些问题,到现在也没搞懂。
首先,网上下载的绿色版还是有很多功能不能实现。
其次,虚拟机版本不一样,其支持的命令也不一样,版本越高,支持的命令越多。
我使用VMwareWorkstation6.0.3build-80004,在命令行下,仅可以执行(1)开启(2)关闭(3)重启(4)挂起这四个功能,我最想使用的恢复快照却不能使用。
开启:vmware-xvm.vmx
关闭:vmrunstopvm.vmx
重启:vmrunresetvm.vmxsoft(无soft时为直接重启)
挂起:vmrunsuspendvm.vmx
幸好,从6.0版本开始提供Vix_API了,可以直接在自己的程序中使用Vix_API操作虚拟机,而且各项功能都可以实现
在完整安装VMwareWorkstation6.0后,在安装目录下就会有VMwareVIX文件夹,其中包含了Vix_API及相关文档、dll、lib等文件。
第一,包含头文件,连接lib
vix.h、vm_basic_types.h、VixAllProducts.lib、VixAllProductsd.lib
第二,按照文档说明操作Vix_API
VixHost_Connect()、?VixHost_Disconnect()、VixHost_FindItems()、VixHost_RegisterVM()、VixHost_UnregisterVM()、VixJob_CheckCompletion()、VixJob_GetError()、VixJob_GetNthProperties()、VixJob_GetNumProperties()、VixJob_Wait()、VixSnapshot_GetChild()、VixSnapshot_GetNumChildren()、VixSnapshot_GetParent()、VixVM_AddSharedFolder()、ixVM_CopyFileFromGuestToHost()、VixVM_CopyFileFromHostToGuest()、VixVM_CreateDirectoryInGuest()、VixVM_CreateSnapshot()、VixVM_CreateTempFileInGuest()、VixVM_Delete()、VixVM_DeleteDirectoryInGuest()、VixVM_DeleteFileInGuest()、VixVM_DirectoryExistsInGuest()、VixVM_EnableSharedFolders()、VixVM_FileExistsInGuest()、VixVM_GetCurrentSnapshot()、VixVM_GetNamedSnapshot()、VixVM_GetNumRootSnapshots()、VixVM_GetNumSharedFolders()、VixVM_GetRootSnapshot()、VixVM_GetSharedFolderState()、VixVM_InstallTools()、VixVM_KillProcessInGuest()、VixVM_ListDirectoryInGuest()、VixVM_ListProcessesInGuest()、VixVM_LoginInGuest()、VixVM_LogoutFromGuest()、VixVM_Open()、VixVM_OpenUrlInGuest()、VixVM_PowerOff()、VixVM_PowerOn()、VixVM_RemoveSharedFolder()、VixVM_RemoveSnapshot()、VixVM_RenameFileInGuest()、VixVM_Reset()、VixVM_RevertToSnapshot()、VixVM_RunProgramInGuest()、VixVM_RunScriptInGuest()、VixVM_SetSharedFolderState()、VixVM_Suspend()、VixVM_UpgradeVirtualHardware()、VixVM_WaitForToolsInGuest()、Vix_FreeBuffer()、Vix_GetErrorText()、Vix_GetHandleType()、Vix_GetProperties()、Vix_GetPropertyType()、Vix_PumpEvents()、Vix_ReleaseHandle()、
第三,使用正确的dll文件
我遇到的这个问题,困扰了我一天来调试。在文档中有相关说明,不同版本的VMware对应不同的dll文件,否则在VixHost_Connect时就会出现报出参数出错的错误!
Tags:VMWare,虚拟机.
小编点评:驱动精灵去广告版+单文件版+万能网卡驱.
下载小编点评:星谷CP-630K打印机驱动是一款官.
下载小编点评:雷柏VH600耳机驱动是由深圳雷柏科技.
下载小编点评:双人暗夜精灵战役1.0.2【攻略】.
下载小编点评:拿破仑:全面战争是著名即时战略游戏全面战争系列.
下载小编点评:吸血鬼莱恩:背叛汉化补丁是业内知名的.
下载小编点评:纪元2205汉化补丁是同名游戏的中.
下载小编点评:泰拉瑞亚Terraria正版B1.3.2.
下载小编点评:职业玩家经理是一款非常不错的模拟类游.
下载小编点评:?《缺氧OxygenNotIncluded》.
下载小编点评:善良的死神新编V1.9正式版隐藏英雄--.
下载小编点评:请在魔兽1.24下运行该版本更新简介.
下载小编点评:神界危机2012第三版【冰封】难度相.
下载魔兽3地图:哲殿
魔兽地图:神之墓地2.8c修改版
魔兽地图:布诺尔世界的传说
我的世界搞点事跑酷地图
魔兽地图:乱世三国2.5.8正式版
求生之路2生化危机1非官方地图
妖精尾巴公会战2.1.32[T]
自由之城1.4【无CD无限蓝P闪】
幸运战争1.27
逃脱大师脑洞地带第二季2.0.14
无极天下1.0.3正式版
讨伐大魔王1.0.9【隐藏英雄密码】
末世佣兵1.0C