标题：虚拟桌面
基于虚拟化技术的定义
“Desktop virtualization (或者成为Virtual Desktop Infrastructure) 是一种基于服务器的计算模型，VDI概念最早由虚拟化厂商VMware提出，目前已经成为标准的技术术语。虽然借用了传统的瘦客户端的模型，但是让管理员与用户能够同时获得两种方式的优点：将所有桌面虚拟机在数据中心进行托管并统一管理；同时用户能够获得完整PC的使用体验。
简单的来说，虚拟桌面是指：支持企业级实现桌面系统的远程动态访问与数据中心统一托管的技术。一个形象的类比，就是今天，我们可以通过任何设备、在任何地点，任何时间访问在网络上的我们的邮件系统，或者网盘；而未来我们可以通过任何设备，在任何地点，任何时间访问在网络上的属于我们个人的桌面系统。[1]行业现状思科在2010年年底的时候，推出了VMware View 4.5 和Citrix XenDesktop两款产品，该两款产品有望在2011年3月上市。这两款产品的价格都低于500美元，包括 一个USB键盘、鼠标和客户端授权。除此之外，思科表示该公司此前发布的Cius平板电脑将支持VMware View、Citrix Receiver 和Wyse Pocket 云计算虚拟软件；并且将会和微软的Windows在一个数据中心进行互联。Cius同样也在2011年3月上市。
桌面虚拟化和瘦客户端计算机已经推出了很多年，通过数据中心服务器中心化电脑的功能、数据和应用程序给予数据和安全更多的控制。虚拟桌面技术架构VDI桌面虚拟化的优势在于运算集中在服务器端，因此在以下两种环境中特别合适：1、在极小的广域网带宽环境下，例如低于500Kbs的线路下，可以采用VMware等VDI产品进行部署，用户可以使用平板电脑或者手机接入，访问自己的桌面环境，实现随时随地办公；2、在新建的全千兆网络环境下，同时业务应用比较简单的环境中，用户部署VDI桌面虚拟化后可以购买100元左右的云终端作为客户机，大大减少客户机的硬件投入，拉平在服务器上的硬件投入，使得总投资更加合理。[2]
VDI虚拟桌面基础架构　虚拟桌面基础架构（Virtual Desktop Infrastructure，简称VDI）是许多机构目前正在评估的全新模式，它是基于早期的RDP协议和瘦客户机逐步演变而来的，也是目前国外VMware等国外虚拟化厂家长期鼓吹的模式。VDI旨在为智能分布式计算带来出色的响应能力和定制化的用户体验，并通过基于服务器的模式提供管理和安全优势。它能够为整个桌面映像提供集中化的管理,但这一模式目前也存在着其固有的问题。主要表现为：因其利用硬件仿真及瘦协议，使得视频、Adobe Flash、IP 语音（VoIP）以及其它计算或图形密集型应用不适用于该模式，而且VDI 需要持久的网络连接，因此不适于要求离线移动性的场合。此外，其基于服务器的模式对服务器的配置有极高的要求，这些问题的存在不能不让众多的用户重新考虑部署VDI的实际意义及成本。　从实际应用方面来分析，VDI模式还存在诸多需要解决的问题，而与之相关的虚拟化桌面，如远程托管桌面、远程虚拟应用程序、远程托管专用虚拟桌面、本地虚拟应用程序及本地虚拟操作系统等虚拟化桌面也都存在着各种问题；另外还有对终端硬件的支持问题、对网络及服务器硬件过度依赖的问题、以及数据安全性问题等。VOI虚拟操作系统基础架构　虚拟操作系统基础架构（Virtual OS Infrastructure，简称VOI）成为一个新的桌面虚拟化发展方向。而在国内，和信最早推出了基于VOI桌面虚拟化架构的虚拟终端管理系统。VOI桌面虚拟化技术不仅可实现基于服务端的远程虚拟OS、APPS、UserProfiles的按需交付，也可实现基于客户端的本地缓存OS、APP及UserProfiles，这样不仅仅可利用终端本地资源处理计算及图形密集型应用，比如：如音视频、大型设计及工业软件等，也可支持各种计算机外设以适应复杂的应用环境及未来的应用扩展。同时，对网络和服务器的依赖性将大大降低，即使网络中断或服务器宕机终端也可继续使用，数据可实现云端集中存储，也可实现终端本地加密存储，且终端应用数据不会因网络或服务端故障而丢失。
WindowsApi函数CreateDesktop
在 Windows Api 中提供了 CreateDesktop 函数来创建新的虚拟桌面,通过 SwitchDesktop 函数可以转入到指定的桌面，在新创建的桌面中可以打开进程explorer.exe，CreateProcess 有个TStartupInfo结构的参数,该结构中有个叫lpDesktop的成员,它指定了在哪个桌面创建进程；该函数实现的虚拟桌面为Windows视图系统创建多桌面扩展，使用户或程序可以多个桌面上相互切换可视化的应用，与Linux 图形界面中四方格切换相似，但是该技术与现行“桌面虚拟化技术”是两种完全不同的概念，不可以混淆。
引用MSDN:
Creates a new desktop, associates it with the current window station of the calling process, and assigns it to the calling thread. The calling process must have an associated window station, either assigned by the system at process creation time or set by the SetProcessWindowStation function.
To specify the size of the heap for the desktop, use the CreateDesktopEx function.函数原型HDESK WINAPI CreateDesktop(
_In_ LPCTSTR lpszDesktop,
_Reserved_ LPCTSTR lpszDevice,
_Reserved_ DEVMODE *pDevmode,
_In_ DWORD dwFlags,
_In_ ACCESS_MASK dwDesiredAccess,
_In_opt_ LPSECURITY_ATTRIBUTES lpsa
);
Parameters
lpszDesktop [in]
The name of the desktop to be created. Desktop names are case-insensitive and may not contain backslash characters (\).
lpszDevice
Reserved; must be NULL.
pDevmode
Reserved; must be NULL.
dwFlags [in]
This parameter can be zero or the following value.[3]在C语言中的实现int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
HDESK hOld = GetThreadDesktop(GetCurrentThreadId());
HDESK hNew = CreateDesktopA("Test", NULL, NULL, NULL, GENERIC_ALL, NULL);
if ((NULL == hOld) || (NULL == hNew))
{
MessageBox(NULL, "失败!", "测试", MB_OK | MB_ICONERROR);
return 1;
}
SetThreadDesktop(hNew);
SwitchDesktop(hNew);
MessageBox(NULL, "成功!", "测试", MB_OK);
SwitchDesktop(hOld);
CloseDesktop(hNew);
return 0;
}在VB中的实现Private Sub Form_Load()
g_hDesktopThreadOld = GetThreadDesktop(App.ThreadID) '得到正常的桌面句柄
RegisterHotKey Me.hWnd, 1, MOD_CONTROL, Asc("Q") '注册热键
RegisterHotKey Me.hWnd, 2, MOD_CONTROL, Asc("W") '注册热键
g_hDesktopNameNew = "MyNewDesktop"
g_hDesktopNew = OpenDesktop(g_hDesktopNameNew, 0, False, DESKTOP_ALL) '如果新桌面已经存在，就打开它
If g_hDesktopNew = 0 Then
g_hDesktopNew = CreateDesktop(g_hDesktopNameNew, vbNullString, ByVal 0&, 0, MAXIMUM_ALLOWED, ByVal 0&) '如果不存在，就新建一个
End If
Call SetThreadDesktop(g_hDesktopNew)
lpOldWinProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf myWindowProc) '子类化主窗口，接收热键消息
End Sub
Private Sub Form_Unload(Cancel As Integer)
If g_hDesktopNew <> 0 Then
CloseDesktop g_hDesktopNew '关闭新建的桌面句柄
End If
SetWindowLong Me.hWnd, GWL_WNDPROC, lpOldWinProc
End Sub
eUonBox虚拟盒子
简介eUonBox虚拟盒子：将用户的电脑环境、应用程序以及相关文档进行封装，并在其它电脑上重现的创新产品。真正实现可移动的虚拟环境。功能桌面环境及设置的可存储，可移动，可重现
eUonBox虚拟盒子可以抓取桌面及桌布、“我的文档”、个人习惯设置、浏览器历史记录与Cookies、收藏夹等个人桌面环境，整合存储到外部存储设备中，实现可随身携带自己的电脑环境，并拿到另一台电脑上进行重现。抓取可抓取并携带已安装的应用程序，可移动，可直接运行，无须安装
可实现在已经安装过某应用程序的电脑中将此应用程序、用户对软件的习惯及相关设置通过eUonBox虚拟盒子抓取到外部存储设备中，实现可随身携带应用程序，并在另一台电脑上直接运行，无须任何安装过程。所携带的应用程序的习惯及设置依然会重现。选择特殊数据的同步及存储、携带
可以选择要携带的邮件客户端、收件夹，对邮件、联系人、便笺、日历、任务、邮件帐号、签名档等个人数据进行与外部存储设备的单向或双向的同步，并存储到外部存储设备中，实现此特殊数据的可携带，并随个人桌面环境同时重现。同步向导式同步过程，三种同步方式，两种同步条件，同步过程轻松管理
人性的向导式同步过程，用户只要回答一些简单的问题即可轻松确定同步方式。有单双方向的三种同步方式供用户选择，时间与范围组成的两种同步条件，满足大部分用户对同步条件的设定要求。同步过程中的关键数据操作都会经过用户确定，同步结果报告内容详尽。绿色主程序绿色便携，即点即用，免安装
eUonBox虚拟盒子是彻底的绿色软件，软件的全部内容只是一个目录，安装与删除只要操作目录即可完成。到其它电脑上也不需要任何的安装过程，直接启动，即点即用，并且退出程序后不会给电脑留下任何垃圾文件及其它信息。私密虚拟环境具有密码保护，完全隔离，安全私密
要进入eUonBox虚拟盒子，必须要通过密码登陆后才可使用。密码通过高强度的加密存储，保证个人虚拟环境的安全私密。另外，eUonBox虚拟盒子虚拟环境是被完全隔离的独立的环境，操作过程安全保密，不泄露个人信息，是完全可信赖的个人私密空间。多语言程序本身拥有多语言支持，并且从架构上已进行软件全球化战略的考虑，完善支持在不同语言环境下的统一的虚拟环境重现，方便的软件国际化扩展及应用。