Vix API を使用しようとしていますが、作業中の仮想マシンに関する情報を取得しようとしています。必要な情報は、VM が接続されているドメインと、特定の VM に登録されている (アクセス権がある) ユーザーのリストです。「google」とドキュメント ( https://www.vmware.com/support/developer/vc-sdk/visdk2xpubs/ReferenceGuide/ ) を使用してみましたが、この情報を取得する方法が見つかりません。ドメインを含む可能性のあるいくつかのオブジェクトを割り当てようとしましたが、役に立ちませんでした。
1 に答える
0
これが役立つかどうかはわかりませんが、以下は Win7 VM の環境から現在のユーザー名を取得する小さな Delphi プロジェクト (vbScript と同じ Vix COM/OLE インターフェイスを使用) からの抜粋です。コードが vbScript または VBA に簡単に変換できることを願っています。もちろん、ユーザー ドメインなど、他の環境変数の値も同様の方法で取得できます。
Vix COM API を徹底的に調べましたが、VM で使用可能なログイン ID のリストを取得するものは見つかりませんでした。したがって、これを行う必要がある場合は、VM で実行してそれらを取得する小さなユーティリティ アプリを作成します。(既にご存知かもしれませんが、Vix インターフェースを介して VM でアプリを実行するのは簡単です。)
コード
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;
于 2015-07-20T14:34:43.777 に答える