2015-07-20 2 views
0

Я пытаюсь использовать Vix API, и я пытаюсь получить некоторую информацию о виртуальных машинах, над которыми я работаю. Информация, которая мне нужна, - это домен, к которому подключена виртуальная машина, и список зарегистрированных пользователей (т. Е. Имеющих доступ) к конкретной виртуальной машине. Я попытался использовать «google» и документацию (https://www.vmware.com/support/developer/vc-sdk/visdk2xpubs/ReferenceGuide/), но я не могу найти, как получить эту информацию. Пытался выделить несколько объектов, которые могли бы содержать домен, но это не помогло.Использование Vix API для получения домена VM и списка пользователей

ответ

0

Я не уверен, если это поможет, но ниже отрывок из небольшого проекта Delphi (который использует тот же Vix COM/OLE интерфейс, VBScript), который извлекает имя текущего пользователя из окружающей среды Win7 VM. Надеюсь, код будет простым для перевода на vbScript или VBA. Очевидно, что вы можете получить значение любой другой переменной среды, такой как Пользовательский домен, аналогичным образом.

Я довольно тщательно просмотрел API Vix COM и не нашел ничего, что могло бы получить список доступных идентификаторов входа для виртуальной машины. Итак, , если бы мне пришлось это сделать, я бы написал небольшое приложение для работы в VM, чтобы получить их. (Вы знаете уже, но это просто запустить приложение в 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;