VMware Remote Console 使用

Wesley13
• 阅读 921

通过console可以实现类似远程桌面的功能,但它的实现方式和远程桌面不同,一般来说远程桌面必须要有网络支持,在机器关闭或者启动过程中无法连接。而console是通过esx的虚拟化组件实现远程桌面。在其sample代码中有一个用html+js编写ActiveX插件的示例。

下方是一个用winform写的console远程截图。

VMware Remote Console 使用

在vmware的developer center中https://developercenter.vmware.com/sdks,下载vmrc sdk,它会以com组件的形式安装,你可以在vs工具箱中找到。

下面上一段sample代码

VMware Remote Console 使用

1 using System;
 2 using System.Linq;
 3 using System.Windows.Forms;
 4 
 5 using Vim25Api;
 6 using AppUtil;
 7 
 8 namespace WindowsFormsApplication1
 9 {
10     public partial class Form1 : Form
11     {
12         public AppUtil.AppUtil util = null;
13 
14         public Form1()
15         {
16             InitializeComponent();   
17         }
18 
19         private void button1_Click(object sender, EventArgs e)
20         {
21             String[] arguments = new string[] {
22                 "--url", "https://192.168.0.161/sdk", 
23                 "--username","root",
24                 "--password","P@ssw0rd", 
25                 "--disablesso", "true",
26                 "--ignorecert", "true"};
27             try
28             {
29                 this.axVMwareEmbeddedRemoteConsole1.startup(2, VMwareRemoteConsoleTypeLib.VMRC_MessageMode.VMRC_DIALOG_MESSAGES, null);
30 
31                 util = AppUtil.AppUtil.initialize("Connect", constructOptions(), arguments.ToArray());
32                 util.connect();
33 
34                 ManagedObjectReference mor = util.getConnection().ServiceRef;
35                 ManagedObjectReference sessionMor = util._connection.Service.RetrieveServiceContent(mor).sessionManager;
36                 string ticket = util._connection.Service.AcquireCloneTicket(sessionMor);
37                 ManagedObjectReference vmMor = util.getServiceUtil().GetDecendentMoRef(null, "VirtualMachine", "test");
38 
39                 axVMwareEmbeddedRemoteConsole1.connect("192.168.0.161", null, true, ticket, null, null, vmMor.Value, null, null);
40             }
41             catch(Exception ex)
42             {
43                 MessageBox.Show(ex.ToString());
44    
45                 this.axVMwareEmbeddedRemoteConsole1.disconnect();
46                 util.disConnect();
47             }
48         }
49         private static OptionSpec[] constructOptions()
50         {
51             OptionSpec[] useroptions = new OptionSpec[5];
52             useroptions[0] = new OptionSpec("url", "String", 1, "ser url", null);
53             useroptions[1] = new OptionSpec("username", "String", 1, "user name", null);
54             useroptions[2] = new OptionSpec("password", "String", 1, "password", null);
55             useroptions[3] = new OptionSpec("disablesso", "bool", 0, "disablesso", null);
56             useroptions[4] = new OptionSpec("ignorecert", "bool", 1, "ignorecert", null);
57             return useroptions;
58         }
59 
60         private void button2_Click(object sender, EventArgs e)
61         {
62             axVMwareEmbeddedRemoteConsole1.disconnect();
63             util.disConnect();
64         }
65     }
66 }

VMware Remote Console 使用

在建立connect连接时,有几个重要的参数

url为https://主机ip/sdk,登录帐号也是主机esx的帐号。

disablesso表示禁用sso单点登录验证,这个要加上,因为在我们远程登录验证不会使用sso。

ignorecert这个参数也要加上,不然会证书验证导致The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

这些参数如何运作可以到vsphere sdk中的apputil项目下找到。

参考:http://www.cnblogs.com/yuefei/p/3615785.html

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这