VMWare VIX是一套自動(dòng)化測(cè)試工具,安裝了vmware虛擬機(jī)程序的本機(jī)可以通過在本機(jī)運(yùn)行vix程序,可以控制虛擬機(jī)的系統(tǒng)。比如我在電腦上裝了真實(shí)系統(tǒng)A,又在A系統(tǒng)上裝了vmware 軟件,然后安裝兩個(gè)虛擬機(jī)B和C,那么在A上用VMware vix編寫程序可以控制B和C。
安裝VMware和客戶機(jī)
①安裝WMware:我的安裝路徑是E:/Program Files/VMware,安裝完成后,在計(jì)算機(jī)C:/Program Files
文件夾下會(huì)自動(dòng)安裝VIX,位置位于C:/Program Files/VMware/VMware VIX,WMware VIX文件夾下東西正是后續(xù)我們需要使用到的
②在WMware中安裝ubuntu:我的安裝路徑就是默認(rèn)的,安裝在了C:/Users/Pan/Documents/Virtual
Machines/Ubuntu文件夾下
VIX使用實(shí)例配置講解
①使用VS建立新的項(xiàng)目,在這里,我的項(xiàng)目命名為Vmware
②在項(xiàng)目中添加兩個(gè)頭文件,vix.h和vm_basic_types.h,將C:/Program Files/VMware/VMware VIX文件夾下兩個(gè)相應(yīng)的文件的內(nèi)容復(fù)制進(jìn)來。
③將C:/Program Files/VMware/VMware VIX/Samples文件夾中的powerOn.c文件的內(nèi)容復(fù)制到項(xiàng)目的源文件Vmware.cpp中。這個(gè)文件里面有不少地方要改,如下:
文件剛開始的部分,找到如下地方進(jìn)行配置(powerOn這個(gè)試驗(yàn)中,不配置貌似也沒問題)
#define USE_WORKSTATIO
#ifdef USE_WORKSTATION
#define CONNTYPE VIX_SERVICEPROVIDER_VMWARE_WORKSTATION
#define HOSTNAME "https://192.168.1.110" (自己的ip地址)
#define HOSTPORT 0(不用改)
#define USERNAME "pan" (ubuntu的用戶名)
#define PASSWORD "1" (ubuntu的密碼)
配置虛擬機(jī)路徑,如圖修改
vmxpath改成自己相應(yīng)的ubuntu的安裝路徑就行了
為項(xiàng)目添加vix的lib和dll
Project->properties->c/c++->general->additional include directories添加引用文件的文件夾的路徑,我的是C:/Program Files/VMware/VMware VIX,WMware VIX
Project->properties->linker->general->additional library directories添加庫文件的文件夾路徑,我的是C:/Program Files/VMware/VMware VIX,WMware VIX
Project->properties->linker->input->additional additional dependencies添加用到的庫文件,添加VixAllProductsDyn.lib
運(yùn)行項(xiàng)目
配置到現(xiàn)在,基本配置已經(jīng)完成,但是你運(yùn)行項(xiàng)目,會(huì)報(bào)錯(cuò)所找不到VixAllProductsDyn.dll,沒關(guān)系,這只需要你將C:/Program Files/VMware/VMware VIX,WMware VIX文件夾下的VixAllProductsDyn.dll拷貝到你項(xiàng)目的debug文件夾下就行了。
到現(xiàn)在,算是全部大功告成了。
開始想通過命令行的方式控制虛擬機(jī),但總是存在一些問題,到現(xiàn)在也沒搞懂。
首先,網(wǎng)上下載的綠色版還是有很多功能不能實(shí)現(xiàn)。
其次,虛擬機(jī)版本不一樣,其支持的命令也不一樣,版本越高,支持的命令越多。
我使用VMware Workstation 6.0.3 build-80004,在命令行下,僅可以執(zhí)行(1)開啟(2)關(guān)閉(3)重啟(4)掛起 這四個(gè)功能,我最想使用的恢復(fù)快照卻不能使用。
開啟:vmware -x vm.vmx
關(guān)閉:vmrun stop vm.vmx
重啟:vmrun reset vm.vmx soft (無soft時(shí)為直接重啟)
掛起:vmrun suspend vm.vmx
幸好,從6.0版本開始提供Vix_API了,可以直接在自己的程序中使用Vix_API操作虛擬機(jī),而且各項(xiàng)功能都可以實(shí)現(xiàn)
在完整安裝VMware Workstation 6.0后,在安裝目錄下就會(huì)有VMware VIX文件夾,其中包含了Vix_API及相關(guān)文檔、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文件
我遇到的這個(gè)問題,困擾了我一天來調(diào)試。在文檔中有相關(guān)說明,不同版本的VMware 對(duì)應(yīng)不同的dll文件,否則在VixHost_Connect時(shí)就會(huì)出現(xiàn)報(bào)出參數(shù)出錯(cuò)的錯(cuò)誤!