2015-07-20 73 views
0

我正在嘗試使用Vix API,並試圖接收我正在處理的虛擬機的一些信息。我需要的信息是虛擬機連接的域,以及註冊(即有權訪問)特定虛擬機的用戶列表。 我嘗試使用'谷歌'和文檔(https://www.vmware.com/support/developer/vc-sdk/visdk2xpubs/ReferenceGuide/),但我找不到如何獲取此信息。試圖分配一些可能包含域名的對象,但沒有幫助。使用Vix API獲取虛擬機的域名和用戶列表

回答

0

我不知道這是否會幫助你,但下面是一個Delphi 項目的提取物(使用相同的Vix指數COM/OLE接口如VBScript)從環境下獲取 當前用戶名一個Win7虛擬機。希望代碼 可以直接轉換爲vbScript或VBA。顯然, 您可以以類似的方式檢索任何其他環境變量(例如用戶域)的值。

我已經通過VIX指數COM API相當徹底的外觀和沒有發現任何這將檢索虛擬機可用的登錄ID的列表。因此,如果我必須這樣做,我會編寫一個小型實用程序應用程序在VM中運行以獲取它們。 (您可能已經知道,但它是簡單的通過VIX指數界面運行在虛擬機的應用程序。)

代碼

type 
    TForm1 = class(TForm) 
    [...] 
    VixLib : IVixLib; 
    Job : IJob; 
    Host : IHost; 
    VM : IVM; 
    Err : Int64; 
    vWaitParams : OleVariant; 
    vResults : OleVariant; 
    vValue : OleVariant; 
    Msg : String; 
    end; 
[...] 
procedure TForm1.GetUserName; 
begin 
    // Prior to calling this code, you need to have successfully called 
    // LogInGuest on the VM via Vix 
    // change USERNAME to USERDOMAIN in the following line to get the domain 
    Job := VM.ReadVariable(VIX_GUEST_ENVIRONMENT_VARIABLE, 'USERNAME', 0, Nil); 
    vWaitParams := VarArrayOf([VIX_PROPERTY_JOB_RESULT_VM_VARIABLE_STRING]); 
    Err := Job.Wait(vWaitParams, vValue); 
    if Err <> 0 then 
    raise Exception.Create('Error %d', [Err]); 

    Msg := vValue[0]; 
    Caption := Msg; 
end;