使用统一资源标识符 (Uniform Resource Identifier, URI) 创建网页或电子邮件链接,最终用户可以单击这些链接启动 Horizon Client、连接到服务器,或者打开远程桌面或已发布的应用程序。

通过构建提供以下部分或所有信息的 URI 来创建链接,这样最终用户就无需再提供它。

  • 服务器地址
  • 服务器的端口号
  • Active Directory 用户名
  • RADIUS 或 RSA SecurID 用户名(如果与 Active Directory 用户名不同)
  • 域名
  • 远程桌面或已发布的应用程序的显示名称
  • 窗口大小
  • 操作包括重置、注销和启动会话
  • 显示协议
  • 用于重定向 USB 设备的选项

要构建 URI,可使用包含 Horizon Client 特定路径和查询部分的 vmware-view URI 方案。

要使用 URI 启动 Horizon Client,必须已在客户端计算机上安装 Horizon Client

用于创建 vmware-view URI 的语法

URI 语法包括 vmware-view URI 方案、用于指定远程桌面或已发布应用程序的路径部分以及用于指定远程桌面或已发布应用程序操作或配置选项的查询(可选)。

URI 规范

使用以下语法来创建用于启动 Horizon Client 的 URI。

vmware-view://[authority-part][/path-part][?query-part]

只有 URI 方案 vmware-view 是必需的元素。由于对于某些客户端操作系统的某些版本,方案名称区分大小写,因此请键入 vmware-view

重要说明: 在所有部分中,必须先根据 UTF-8 [STD63] 对非 ASCII 字符进行编码,然后必须对相应 UTF-8 序列的每个八进制数进行百分比编码,以将其表示为 URI 字符的形式。

有关 ASCII 字符的编码信息,请参考 http://www.utf8-chartable.de/ 上的 URL 编码参考。

authority-part
服务器地址以及(可选)用户名和/或非默认端口号。服务器名称中不能使用下划线 (_)。服务器名称必须遵循 DNS 语法。

要指定用户名,请使用下面的语法。

user1@server-address

您不能指定包含域的 UPN 地址。要指定域,可以使用 URI 中的 domainName 查询部分。

要指定端口号,请使用下面的语法。

server-address:port-number
path-part
远程桌面或已发布应用程序的显示名称。该显示名称是在 Horizon Console 中创建桌面池或应用程序池时指定的。如果显示名称中包含空格,请使用 %20 编码机制来表示空格。
或者,您也可以指定一个桌面 ID 或应用程序 ID,该 ID 是包含桌面池 ID 或应用程序池 ID 的路径字符串。要查找桌面 ID 或应用程序 ID,请在连接服务器主机上打开“ADSI 编辑”,导航到 DC=vdi,dc=vmware,dc=int,然后选择 OU=Applications 节点。此时会列出所有桌面池和应用程序池。 distinguishedName 属性指定 ID 值。在 URI 中指定 ID 值之前,必须对其进行编码,例如, cn%3Dwin7-32%2Cou%3Dapplications%2Cdc%3Dvdi%2Cdc%3Dvmware%2Cdc%3Dint
如果您指定桌面 ID 或应用程序 ID,则必须仅使用小写字母,即使桌面 ID 或应用程序 ID 在“ADSI 编辑”中包含大写字母也是如此。
注: 多个远程桌面或已发布的应用程序可以具有相同的显示名称,但桌面 ID 和应用程序 ID 是唯一的。要指定特定的远程桌面或已发布的应用程序,请使用桌面 ID 或应用程序 ID,而不要使用显示名称。
query-part
要使用的配置选项,或者要执行的远程桌面或已发布应用程序操作。查询不区分大小写。要使用多个查询,请使用 & 符号分隔查询。如果查询之间有冲突, Horizon Client 使用列表中的最后一个查询。使用以下语法。
query1=value1[&query2=value2...]

支持的查询

此类型的 Horizon Client 支持以下查询。如果要为多种类型的客户端(例如,桌面客户端和移动客户端)创建 URI,请参阅针对每种客户端系统类型的安装和设置指南,了解受支持的查询列表。

action
表 1. 可与 action 查询一起使用的值
说明
browse 显示指定服务器上托管的可用远程桌面和已发布应用程序的列表。使用此项操作时无需指定远程桌面或已发布应用程序。
start-session 打开指定的远程桌面或已发布的应用程序。如果未提供任何操作查询以及远程桌面名称或已发布应用程序名称,则 start-session 为默认操作。
reset

关闭并重新启动指定的远程桌面或已发布的应用程序。未保存的数据都会丢失。重置远程桌面与按下物理 PC 上的重置按钮相同。

restart 关闭并重新启动指定的远程桌面。重新启动远程桌面与 Windows 操作系统重新启动命令相同。在重新启动之前,操作系统通常会提示用户保存任何未保存的数据。
logoff 将用户从远程桌面中的客户机操作系统中注销。如果指定已发布的应用程序,则此操作被忽略,或者最终用户看到一条警告消息“URI 操作无效”。
args
指定要在已发布的应用程序启动时添加的命令行参数。使用语法 args= value,其中 value 是字符串。对于以下字符,使用百分号编码:
  • 对于冒号 (:),使用 %3A
  • 对于反斜杠 (\),使用 %5C
  • 对于空格 ( ),使用 %20
  • 对于双引号 ("),使用 %22

例如,要为 Notepad++ 应用程序指定 "My new file.txt" 文件名,请使用 %22My%20new%20file.txt%22

appProtocol
对于已发布的应用程序,有效值为 PCOIPBLAST。例如,要指定 PCoIP,请使用 appProtocol=PCOIP 语法。
connectUSBOnInsert
插入 USB 设备时,将其连接到前台远程桌面或已发布的应用程序。如果您为远程桌面指定了 unattended 查询,则此查询将以隐式方式设置。要使用此查询,您必须将 action 查询设置为 start-session,或者不使用 action 查询。有效值为 truefalse。举例说明该语法: connectUSBOnInsert=true
connectUSBOnStartup
将当前连接到客户端系统的所有 USB 设备重定向至远程桌面或已发布的应用程序。如果您为远程桌面指定了 unattended 查询,则此查询将以隐式方式设置。要使用此查询,您必须将 action 查询设置为 start-session,或者不使用 action 查询。有效值为 truefalse。举例说明该语法: connectUSBOnStartup=true
desktopLayout
设置远程桌面窗口的大小。要使用此查询,您必须将 action 查询设置为 start-session,或者不使用 action 查询。
表 2. desktopLayout 查询的有效值
说明
fullscreen 在一个显示器中全屏显示。该值是默认值。
multimonitor 在多个显示器中全屏显示。
windowLarge 大窗口。
windowSmall 小窗口。
WxH 自定义分辨率,您可以以像素为单位指定宽乘高。举例说明该语法:desktopLayout=1280x800
desktopProtocol
对于远程桌面,有效值为 RDPPCOIPBLAST。例如,要指定 PCoIP,请使用 desktopProtocol=PCOIP 语法。
domainName
指定与连接到远程桌面或已发布应用程序的用户相关联的 NETBIOS 域名。例如,您可以使用 mycompany,而非 mycompany.com
filePath
指定本地系统上您要使用已发布的应用程序打开的文件的路径。您必须指定包括驱动器盘符的完整路径。对于以下字符,使用百分号编码:
  • 对于冒号 (:),使用 %3A
  • 对于反斜杠 (\),使用 %5C
  • 对于空格 ( ),使用 %20

例如,要表示文件路径 C:\test file.txt,请使用 C%3A%5Ctest%20file.txt

launchMinimized
以最小化模式启动 Horizon Client。在指定的远程桌面或已发布的应用程序启动之前, Horizon Client 将一直保持最小化。语法为 launchMinimized=true。不能将此查询与 unattended 查询一起使用。
tokenUserName
指定 RSA 或 RADIUS 用户名。只有在 RSA 或 RADIUS 用户名与 Active Directory 用户名不同时,才使用此查询。如果未指定此查询且需要 RSA 或 RADIUS 身份验证,则 Horizon Client 使用 Windows 用户名。语法为 tokenUserName=name
unattended
在 Kiosk 模式下创建服务器与远程桌面的连接。使用此查询时,如果您从客户端设备的 MAC 地址生成帐户名,则不要指定用户信息。如果在 ADAM 中创建自定义帐户名(如以 "custom-" 开头的名称),则必须指定帐户信息。
useExisting
如果此选项设置为 true,则只能运行一个 Horizon Client 实例。如果用户尝试连接到第二个服务器,必须先注销第一个服务器,以断开与远程桌面和已发布应用程序会话的连接。如果此选项设置为 false,则可运行多个 Horizon Client 实例,并且用户可以在同时连接到多个服务器。默认值是 true。示例语法为 useExisting=false
unauthenticatedAccessEnabled
如果将此选项设置为 true,那么“未验证访问”功能将默认启用。 未验证访问选项在用户界面中处于可见状态并已选中。如果将此选项设置为 false,那么“未验证访问”功能将被停用。 未验证访问设置处于隐藏状态并被停用。如果将此选项设置为 "",那么“未验证访问”功能将被停用,而且 未验证访问设置将在用户界面中处于隐藏状态并被停用。举例说明该语法: unauthenticatedAccessEnabled=true
unauthenticatedAccessAccount
如果“未验证访问”功能处于启用状态,则设置要使用的帐户。如果“未验证访问”处于停用状态,那么此查询将被忽略。使用 anonymous1 用户帐户的语法示例: unauthenticatedAccessAccount=anonymous1

vmware-view URI 示例

您可以使用 vmware-view URI 方案来创建超文本链接或按钮,并将这些链接包含在电子邮件或网页中。例如,最终用户可以单击 URI 链接,以使用您指定的启动选项启动远程桌面。

每个 URI 示例后都将包含最终用户在单击 URI 链接后所见到的内容描述。

  1. vmware-view://view.mycompany.com/Primary%20Desktop?action=start-session

    Horizon Client 启动并连接到 view.mycompany.com 服务器。出现登录对话框,提示用户输入用户名、域名和密码。成功登录后,客户端连接到显示名称为 Primary Desktop 的远程桌面,并且用户登录到客户机操作系统。

    注: 在此示例中,会使用默认的显示协议和窗口大小。默认显示协议为 PCoIP,默认窗口大小为全屏。
  2. vmware-view://view.mycompany.com/cn%3Dwin7-32%2Cou%3Dapplications%2Cdc%3Dvdi%2Cdc%3Dvmware%2Cdc%3Dint

    Horizon Client 启动并连接到 view.mycompany.com 服务器。出现登录对话框,提示用户输入用户名、域名和密码。成功登录后,客户端连接到桌面 ID 为 CN=win7-32,OU=Applications,DC=vdi,DC=vmware,DC=int(编码值 cn%3Dwin7-32%2Cou%3Dapplications%2Cdc%3Dvdi%2Cdc%3Dvmware%2Cdc%3Dint)的远程桌面。

  3. vmware-view://view.mycompany.com:7555/Primary%20Desktop

    该 URI 与前面的示例效果相同,不同的是该 URI 对连接服务器实例使用 7555 非默认端口。(默认端口为 443。)由于已提供远程桌面标识符,因此即使 URI 中不包含 start-session 操作,远程桌面也能打开。

  4. vmware-view://[email protected]/Finance%20Desktop?desktopProtocol=PCOIP

    Horizon Client 启动并连接到 view.mycompany.com 服务器。在登录对话框中的用户名文本框中填入 fred。用户必须提供域名和密码。成功登录后,客户端连接到显示名称为 Finance Desktop 的远程桌面,并且用户登录到客户机操作系统。用 PCoIP 显示协议进行连接。

  5. vmware-view://view.mycompany.com/Calculator?action=start-session&appProtocol=BLAST

    Horizon Client 启动并连接到 view.mycompany.com 服务器。在登录对话框中,用户必须提供用户名、域名和密码。成功登录后,客户端连接到显示名称为 Calculator 的已发布应用程序。连接使用 VMware Blast 显示协议。

  6. vmware-view://[email protected]/Finance%20Desktop?domainName=mycompany

    Horizon Client 启动并连接到 view.mycompany.com 服务器。在登录对话框中的用户名文本框中填入 fred文本框中填入 mycompany。用户只需提供一个密码。成功登录后,客户端连接到显示名称为 Finance Desktop 的远程桌面,并且用户登录到客户机操作系统。

  7. vmware-view://view.mycompany.com/

    Horizon Client 启动,用户将看到连接 view.mycompany.com 服务器的登录提示。

  8. vmware-view://view.mycompany.com/Primary%20Desktop?action=reset

    Horizon Client 启动并连接到 view.mycompany.com 服务器。出现登录对话框,提示用户输入用户名、域名和密码。成功登录后,Horizon Client 会重置指定的桌面。

    注: 只有在 Horizon 管理员为远程桌面启用了重置功能时,才能执行该操作。
  9. vmware-view://view.mycompany.com/Primary%20Desktop?action=restart

    Horizon Client 启动并连接到 view.mycompany.com 服务器。出现登录对话框,提示用户输入用户名、域名和密码。成功登录后,Horizon Client 会重新启动指定的桌面。

    注: 只有在 Horizon 管理员为远程桌面启用了重新启动功能时,才能执行该操作。
  10. vmware-view://view.mycompany.com/Primary%20Desktop?action=start-session&connectUSBOnStartup=true
    该 URI 具有与第一个示例相同的效果,所有连接到客户端系统的 USB 设备都重定向到远程桌面。
  11. vmware-view://

    如果 Horizon Client 未在运行,它将启动。如果 Horizon Client 已在运行,它将进入前台。

  12. vmware-view://10.10.10.10/My%20Notepad++?args=%22My%20new%20file.txt%22

    在服务器 10.10.10.10 上启动 My Notepad++,然后在已发布应用程序的启动命令中传递 My new file.txt 参数。空格和双引号使用百分号转义。文件名用双引号引起来,因为它包含空格。

    也可以在 Windows 命令行提示符下使用以下语法键入该命令:
    vmware-view.exe --serverURL 10.10.10.10 --appName "My Notepad++" --args "\"my new.txt\""
    在该示例中,双引号是使用 \" 字符转义的。
  13. vmware-view://10.10.10.10/Notepad++%2012?args=a.txt%20b.txt

    在服务器 10.10.10.10 上启动 Notepad++ 12,然后在已发布应用程序的启动命令中传递 a.text b.txt 参数。由于该参数未用引号引起来,因此,文件名用空格隔开,并在 Notepad++ 中单独打开这两个文件。

    注: 已发布的应用程序使用命令行参数的方式可能不相同。例如,如果将 a.txt b.txt 参数传递给 WordPad,WordPad 仅打开一个文件 ( a.txt)。
  14. vmware-view://view.mycompany.com/Notepad?unauthenticatedAccessEnabled=true&unauthenticatedAccessAccount=anonymous1

    Horizon Client 启动并使用 anonymous1 用户帐户连接到 view.mycompany.com 服务器。记事本应用程序将会启动,并且不会提示用户提供登录凭据。

HTML 代码示例

您可以使用 URI 来创建超文本链接和按钮,以将其包含在电子邮件或网页中。以下示例介绍了如何使用第一个 URI 示例中的 URI 对标记为 Test Link 的超文本链接和标记为 TestButton 的按钮进行编码。

<html>
<body>

<a href="vmware-view://view.mycompany.com/Primary%20Desktop?action=start-session">Test Link</a><br>

<form><input type="button" value="TestButton" onClick="window.location.href=
'vmware-view://view.mycompany.com/Primary%20Desktop?action=start-session'"></form> <br>

</body>
</html>