2012-08-24 53 views
-1

我有多臺VMware機器;他們都運行Windows服務器,並且我希望在所有這些機器上運行程序,而不是通過複製和雙擊執行,而是像使用VirtualBox SDK一樣使用一些VMware API來執行此操作。以編程方式在VMware機器上執行程序

VMware API中是否有任何功能允許我對VMware機器執行程序?

+4

你看過嗎? http://www.vmware.com/support/developer/prog-api/ – Nifle

回答

4

如在documentation of the VMware API中報告的那樣,您需要的功能是VixVM_RunProgramInGuest(),這需要您使用VixVM_LoginInGuest()在來賓操作系統(在虛擬機上運行的操作系統)上進行身份驗證。

該文檔舉例說明如何在來賓操作系統中調用程序;它是一個完整的示例,展示瞭如何連接到虛擬機服務器,打開定義虛擬機的文件並打開它。基本代碼如下:儘管如此,你應該閱讀完整的例子。

// Authenticate for guest operations. 
jobHandle = VixVM_LoginInGuest(vmHandle, 
    "vixuser", // userName 
    "secret", // password 
    0,   // options 
    NULL,  // callbackProc 
    NULL  // clientData 
); 

err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);  

if (VIX_OK != err) { 
    // Handle the error. 
    goto abort; 
} 

Vix_ReleaseHandle(jobHandle); 

// Run the target program. 
jobHandle = VixVM_RunProgramInGuest(vmHandle, 
    "c:\\myProgram.exe", 
    "/flag arg1 arg2", 
    0,     // options 
    VIX_INVALID_HANDLE, // propertyListHandle 
    NULL,    // callbackProc 
    NULL    // clientData 
); 

err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE); 

if (VIX_OK != err) { 
    // Handle the error. 
    goto abort; 
} 

Vix_ReleaseHandle(jobHandle); 

連接到虛擬機服務器的部分如下。

jobHandle = VixHost_Connect(VIX_API_VERSION, 
    VIX_SERVICEPROVIDER_VMWARE_SERVER, 
    NULL,    // hostName 
    0,     // hostPort 
    NULL,    // userName 
    NULL,    // password 
    0,     // options 
    VIX_INVALID_HANDLE, // propertyListHandle 
    NULL,    // callbackProc 
    NULL    // clientData 
); 

err = VixJob_Wait(jobHandle, VIX_PROPERTY_JOB_RESULT_HANDLE, &hostHandle, VIX_PROPERTY_NONE); 

if (VIX_OK != err) { 
    // Handle the error. 
    goto abort; 
} 

Vix_ReleaseHandle(jobHandle); 
相關問題