App Layering

部署用户层

用户层将 保留每个用户的:

  • 配置文件设置
  • 数据
  • 非持久性 VDI 环境中本地安装的应用程序

在映像模板上启用用户层时,使用生成的分层图像预配的系统会为每个用户提供一个用户层。

当用户登录到启用用户层的桌面时,将创建一个新的搜索索引数据库。索引包含来自用户层和任何弹性层的搜索信息。搜索功能仅在索引完成时才可用。

本主题介绍如何在图像模板和生成的分层图像上启用用户层。使用映像预配的系统为每个用户提供一个用户层。

用户层类型

您可以启用以下类型的用户层:

  • 完整 -用户的所有数据、设置和本地安装的应用程序都存储在用户层中。
  • Office 365 -(桌面系统)只有用户的 Outlook 数据和设置存储在用户层中。
  • Session Office 365 -(会话主机)只有用户的 Outlook 数据和设置存储在用户层中。

您可以启用完整用户层、Office 365 用户层或会话 Office 365 用户层。完整用户层包括 Office 365/Session Office 365 用户层保存的所有内容,以及其他应用程序的设置和数据。

要求

在启用用户层之前,请确保满足适用于以下类型的用户层的要求:

  • 所有类型的用户层
  • 完整用户层
  • Office 365 和会话 Office 365 用户层

所有用户层

要启用用户层,您需要:

  • 足够的网络带宽。带宽和延迟会对用户层产生重大影响。每次写操作都会通过网络进行。
  • 为用户的数据、配置设置和本地安装的应用程序分配足够的存储空间。(设备使用主存储位置来打包层、发布分层图像和提供弹性层。)

完整用户层

  • 将“配置文件管理”与“完整”用户层结合使用时,必须关闭用户注销信息的删除功能。根据部署设置的方式,您可以使用以下任一方式关闭删除:

    • 组策略对象。
    • 关于 Delivery Controller (DDC) 的策略。

Office 365 和会话 Office 365 用户层

  • 使用配置文件管理器,如 Citrix 配置文件管理器。否则,Outlook 假定每个登录的用户都是新用户,并为他们创建操作系统文件。
  • Office 层必须包含在映像模板中并部署在分层映像中。但是,您可以将其他弹性层与 Office 365 用户层结合使用。
  • Microsoft Office 仅支持作为已发布图像中的应用程序层,而不是弹性层。
  • 对搜索索引文件的默认位置的任何更改都 会保留在 Office 365 层中。
  • 此功能已经针对每个用户一次一台桌面进行测试(单点登录)。

兼容性

以下平台支持完整的用户层:

  • 操作系统: 必须将所有操作系统配置为单用户模式才能与用户层一起使用。服务器不能在多用户模式下使用。不支持会话主机上的用户层。
    • Windows 7 64 位
    • Windows 10 64 位
    • Windows 服务器 2016,仅限单用户模式
    • Windows 服务器 2019,仅限单用户模式
  • 发布平台: 以下发布平台支持用户层。
    • Citrix Virtual Desktops
    • VMware Horizon View

用户层 支持的应用程序

用户层不支持以下应用程序。 要在本地安装这些应用程序:

  • 企业应用程序:企业应用程序(如 MS Office 和 Visual Studio)必须安装在应用程序层中。用户层基于与弹性层相同的技术。与弹性层一样,切勿为这些企业应用程序使用用户层!
  • 使用驱动程序存储的驱动程序的应用程序。示例:打印机驱动程序。

    注意:

    您可以使用组策略使打印机可用。请参阅下一节中的 GPO 安装的打印机。

  • 修改网络堆栈或硬件的应用程序。示例:VPN 客户端。
  • 具有引导级驱动程序的应用程序。示例:病毒扫描仪。
  • 需要添加本地用户或组的应用程序。作为安装应用程序的一部分添加的本地用户和组仅保留在操作系统层中。考虑在将包含在基础映像中的层上安装应用程序,并在操作系统层中添加了所需的用户或管理员。

Windows 更新

必须在用户层禁用 Windows 更新。

Outlook 存储加载项

Citrix 配置文件管理会禁用应用商店加载项。

Outlook 首次启动时,功能区上的 “ 存储/加载项 ” 图标将显示一个窗口,其中包含一长串加载项列表。在初始登录过程中,如果您安装了加载项,它们将在后续登录时显示在功能区上。如果不安装加载项, 存储/加载项 图标将显示一个空白的白色窗口。

GPO 安装的打印机

对于运行 Windows 10 的非持久性桌面上的用户,可以使用组策略安装打印机。制定策略后,打印机将列在用户的“设备和打印机”、“应用程序打印机设置”和“设备管理器”中。

要设置 GPO 安装的打印机,请执行以下操作:

  1. 在图像模板中启用用户层。
  2. 确保桌面已加入域(在平台层上)。
  3. 创建组策略以部署每个网络打印机,然后将其分配给计算机。
  4. 以域用户身份登录时,请验证打印机是否列在 “设备和打印机”、 “记事本”和 “设备管理器”中。

VMware Horizon View

必须为非持久桌面配置 Horizon View,并且 必须 将桌面设置为 注销时刷新。注销时删除或刷新计算机。示例:

本地化后的图片

在 View 设置为 “立即刷新”时注销后,桌面将进入维护模式。如果池中只有一台计算机,则在该计算机完成刷新之前,该池将不可用。

  • 用户首次登录桌面时,设备会为他们创建一个用户层。
  • 即使弹性分配的层未加载,用户也会收到其用户层。
  • 如果在 AD 中重命名用户,则会为新名称创建新目录和用户层。在以下位置更改用户名:
    • 文件共享上的目录。
    • Hypervisor 上的 VHD 文件。

在分层图像上启用用户层

要部署用户层,请使用图像模板中的设置启用层。有关详细步骤,请参阅 创建或克隆映像模板。本文的其余部分提供了有关调整大小、存储、配置安全性、移动和修复用户层的详细信息。它还介绍了为最终用户自定义通知的步骤。

用户层位置

当图像模板启用了用户层时,您发布的图像会保留用户的数据、设置和本地安装的应用程序。

启用用户层后,必须为层添加存储位置。

重要:

允许将用户层保存在设备的主文件共享上。否则,空间可能会被耗尽:

  • 升级软件。
  • 向用户提供弹性层。
  • 保存要移动到不受支持的连接器的 Hypervisor 的文件。

添加到设备的第一个存储位置将成为未与任何其他存储位置关联的用户层的默认位置。添加更多存储位置时,它们将按优先级顺序列出。

您可以将用户组分配给您添加的每个存储位置。

当用户属于多个组时存储用户层的位置

如果用户属于多个组,并且这些组被分配到不同的存储位置,则用户的用户层将存储在优先级最高的存储位置。

如果在将用户的用户层保存到最高优先级位置 ,更改了用户分配到的存储位置的优先级顺序,则在该点之前保存的数据将保留在原始位置。要保留用户的用户层, 必须 将其用户层复制到新的最高优先级位置。

如何在特定图像上指定用户层文件共享位置

您可以支持需要同时访问两个独立映像的用户,其中两个图像:

  • 需要用户层的持久性。
  • 使用相同的操作系统层创建。

要配置用户层文件共享分配:

  1. 在任何用户登录 前,将以下注册表项添加到一个或多个已发布的映像中:

    [HKLM\Software\Unidesk\ULayer] “UserLayerSharePath”

您可以将前面的键添加到平台层、应用程序层或计算机组策略中。

如果在用户登录之前将 UserLayerSharePath 密钥添加到映像中,则设备将忽略用户层共享分配。相反,计算机上的所有用户都使用用户层 VHD 的指定共享。\Users`` 子树附加到此键以定位实际层。

如何指定自定义用户层路径

您可以通过 CustomUserLayerPathHKLM\Software\Unidesk\Ulayer 密钥中创建一个调用的 REG_SZ 值来设置自定义路径。HKLM\Software\Unidesk\Ulayer 密钥可以包括环境变量。

CustomUserLayerPath 值中,所有系统变量都可以展开,但唯一可以展开的用户变量是 %USERNAME%%USERDOMAIN%。完整路径将是:

<CustomUserLayerPath>\<OSID_OSNAME>

如果使用 GPO 设置自定义用户层路径,请使用 %<USERNAME>%%<USERDOMAIN>% 防止 GPO 扩展路径。

  • 如果 CustomUserLayerPath 已定义,则使用它而不是任何其他路径。
  • 如果未定义 CustomUserLayerPath,则使用 UserLayerSharePath(位于同一个密钥内的密钥)。
  • 如果未定义 UserLayerSharePath,则使用应用 App Layering 设备的 JSON 中列出的StorageLocation。您可以在管理控制台的系统 > 用户层存储位置设置中编辑 UserLayerSharePath
  • 如果应用 App Layering 设备的 JSON 中没有列出 StorageLocation,则使用 RepositoryPath。您可以在 CustomUserLayerPathUserLayerSharePath 的同一注册表位置编辑 RepositoryPath
  • 定义 CustomUserLayerPath 后,创建用户图层的路径将是展开路径,再加上 \<OSID_OSNAME>。所有其他路径都是共享路径,它们被附加到 \Users\<Domain_UserName>\<OSID_OSNAME>

在设备上创建用户层的位置

在设备的网络文件共享上,将在 “用户”文件夹中创建 户层。例如:

\MyServer\\*MyShare*\Users
<!--NeedCopy-->

每个用户在 Users 目录中都有自己的目录。用户的目录命名如下:

Users\\*DomainName_username*\\*OS-Layer-ID-in-hex*_\*OS-Layer-name\*\\*username*.vhd
<!--NeedCopy-->

例如:

  • 用户的登录名: jdoe
  • 用户的域: testdomain1
  • 操作系统层:MyOSLayer(ID 是十六进制格式: 123456
  • 用户层将在以下位置创建:
\MyServer\MyShare\Users\testdomain1_jdoe\123456_MyOSLayer\jdoe.vhd
<!--NeedCopy-->

用户可以访问其用户层的位置

创建完整用户层时,用户可以访问整个 C:\(受窗口权限和目录上的公司安全性限制)。

创建 Office 365 层时,用户层目录将重定向到 Office 365 层:

C:\user\\<username>\Appdata\local\Microsoft\Outlook
<!--NeedCopy-->

添加存储位置

要为图像的用户层添加存储位置,请执行以下操作:

  1. 登录到管理控制台。

  2. 选择 “ 系统”> “用户层存储位置”。此时将显示文件共享列表,但设备的主文件共享除外。

  3. 选择 “ 添加存储位置”,然后输入新位置的名称和网络路径。

  4. 用户层 “分配 ”选项卡上,展开目录树。

  5. 通过单击一个或多个组的复选框来添加新的存储位置。

  6. 此时将显示文件共享列表,但设备的主文件共享除外。

  7. 在 “ 确认并完成 ”选项卡上,选择 “ 添加存储位置 ”。

添加存储位置后,您必须对用户层文件夹设置安全性。

在用户层文件夹上配置安全设置

您可以为用户层指定多个存储位置。对于每个存储位置(包括默认位置),您需要创建 \Users 子文件夹并确保该位置的安全。

域管理员必须将每个用户层文件夹的安全性设置为以下值:

设置名称 适用对象
创建者/所有者 修改/删除子文件夹和文件 * 仅子文件夹和文件
所有者权利 修改 仅子文件夹和文件
用户或组: 创建 Folder/Append Data; Traverse Folder/Execute File; List Folder/Read Data; Read Attributes 仅限选定的文件夹
系统 完全控制 选定的文件夹、子文件夹和文件
域管理员和选定的管理员组 完全控制 选定的文件夹、子文件夹和文件

* 在某些服务器上, Creator 所有者 需要 删除子文件夹和文件 (高级权限),以便 App Layering 可以在用户层修复后进行清理。

配置用户层文件夹的安全性:

  1. 登录到管理控制台。

  2. 单击 “ 系统”> “用户层存储位置”。显示的文件共享是为用户层定义的存储位置。假设您定义了三个存储位置,以便您能够独立于组织中的其他所有人管理 Group1 和 Group2 的存储位置: `
    • Default location - \MyDefaultShare\UserLayerFolder\
    • Group1 - \\MyGroup1\Share\UserLayerFolder\
    • Group2 - \\MyGroup2\Share\UserLayerFolder\

    注意: 用于存在操作系统、应用程序和平台层的设备的主文件共享没有 * 作为用户层存储位置列出。有关 App Layering 文件共享的更多信息,请参阅 [设置文件共享] (https://docs.citrix.com/zh-cn/citrix-app-layering/4/configure/set-up-file-share.html)。

  3. 在每个文件共享下创建 \Users 子目录:
    \MyDefaultShare\UserLayerFolder\Users\

    \MyGroup1Share\UserLayerFolder\Users\

    \MyGroup2Share\UserLayerFolder\Users\
<!--NeedCopy-->
  1. 将上述安全设置列表应用于 “ 用户”下的每个子目录。

将用户个性化层 Studio 策略应用于用户层

在分层映像上启用用户层后,可以通过配置相应的 Citrix Studio 策略来覆盖用户层的默认存储库路径和层大小:

  • 用户层存储库路径: 定义访问用户层的网络位置。
  • 用户层大小 GB: 定义允许用户层磁盘增长的大小。

如果已发布映像运行受支持的 VDA 版本,并且这些策略已定义,则策略中定义的路径和大小将被赋予最高优先级。

增加分配的用户层大小将在用户下次登录时生效。减小分配的用户层大小不会影响现有用户层。

定义影像的用户层的 Studio 策略

要为分层映像的用户层配置 Citrix Studio 策略,请执行以下操作:

  1. 在 Citrix Studio 中,在导航窗格中选择 策略

    在 Studio 中选择“策略”

  2. 在 “操作” 窗格中选择 创建策略 。此时将显示“创建策略”窗口。

  3. 在搜索字段中键入“用户层”。可用策略列表中显示以下两个策略:
    • 用户层存储库路径
    • 用户层大小(GB)

      注意:

      增加分配的用户层大小将在用户下次登录时生效。减小分配的用户层大小不会影响现有用户层。

  4. 单击用户层存储库路径旁边的选择。此时将显示“编辑设置”窗口。

    用户层存储库路径

  5. 字段中输入格式为 \\server name or address\folder name 的路径,单击确定

    输入存储库路径

  6. 可选:单击“用户层大小(GB)”旁边的选择

    用户层存储库路径

  7. 此时将显示 编辑设置 窗口。

  8. 可选:将默认值 “0” 更改为用户层可以增长 的最大大小(以 GB 为单位) 。单击 OK(确定)。

    注意:

    如果保留默认值,则最大用户层大小为 10 GB。

  9. 单击下一步以配置用户和计算机。单击此图像中突出显示的 交付组分配 链接:

    用户层存储库路径

  10. 在“交付组”菜单中,选择在上一部分中创建的交付组。单击 OK(确定)。

    选择交付组

  11. 输入策略的名称。单击该复选框以启用该策略,然后单击完成

    用户层策略名称

将现有用户层移动到新的存储位置

将每个用户层存储位置复制到其新位置:

  1. 确保用户层未在使用中。

    如果用户在移动其用户层之前登录,则会创建一个新的用户层。不会丢失任何数据,但如果发生这种情况,请务必:

    • 将新创建的用户层移动到新目录。
    • 保留用户的 ACL。
  2. 浏览到包含用户层 VHD 文件的目录。

  3. 使用以下命令,将每个用户层 VHD 文件从上一位置复制到新位置

    xcopy Domain1\User1 Domain1_User1\ /O /X /E /H /K
<!--NeedCopy-->
  1. 验证以下目录及其中的文件上的所有权限是否正确:
    \\\Root\Engineering\Users

    \\\Root\Engineering\Users\Domain1_User1\\...

    \\\Root\Engineering\Users\Domain2_User2\\...
<!--NeedCopy-->

如果允许用户创建用户层

如果选择允许用户创建用户层,则必须手动清除共享中的原始目录和文件。

用户层大小

默认情况下,映像的用户层允许的磁盘空间为每层 10 GB。

您可以通过以下方式更改默认用户层大小:

  • 定义用户层共享的配额
  • 设置注册表覆盖

使用 Office 365 用户层时,Outlook 层默认为 10 GB,但 Outlook 会根据可用磁盘空间量设置卷大小。Outlook 根据分层图像上可用的内容使用或多或少的空间。报告的大小基于分层图像。

优先顺序

部署用户层时,设备将使用以下优先顺序来确定用户层大小:

  • 使用以下任一方式设置用户层大小的磁盘配额:
    • 微软文件服务器资源管理器 (FSRM)
    • 微软配额管理器
  • 用户层磁盘的注册表覆盖: (HKLM\SOFTWARE\Unidesk\ULayer\DefaultUserLayerSizeInGb
  • 默认用户层大小 (10 GB)

更改用户层大小

增加分配的用户层大小将在用户下次登录时生效。减小分配的用户层大小不会影响现有用户层。

定义用户层磁盘的磁盘配额

你可以使用 Microsoft 的任一配额工具为用户层磁盘大小设置 配额:

  • 文件服务器资源管理器 (FSRM)
  • 配额管理器

必须在名为 U sers的用户层目录上设置配额。

注意:

更改配额(增加或减少)只会影响新用户层。先前设置了现有用户层的最大大小,并在更新配额时保持不变。

设置最大大小注册表覆盖

可以使用托管计算机上的注册表覆盖默认用户层最大大小。下列注册表项为可选。您无需为正常操作配置这些密钥。如果您需要其中一个密钥,请使用层或 GPP 手动添加密钥。

注册表根:HKLM\Software\Unidesk\Ulayer

类型 默认值 说明
UseQuotaIfAvailable 字符串 真;假 True 表示启用配额的发现和使用。假以禁用。
DefaultUserLayerSizeInGb DWord 用户定义的 用户层的大小,以 GB 为单位(例如 5、10、23、…) 如果未指定,则默认值为 10。
QuotaQuerySleepMS DWord 用户定义的 为用户层创建目录后检查是否具有配额之前等待的毫秒数。某些配额系统需要时间才能将配额应用到新目录,例如 FSRM。默认配额为 1000。

自定义用户层通知消息

当用户无法访问其用户层时,他们会收到一条通知消息。

用户层消息

用户层通知消息包括以下内容。您可以使用以下步骤自定义前两条消息。

  • 使用中的用户层 (可定制的消息)

    我们无法附加您的用户层,因为它正在使用中。不会保存您对应用程序设置或数据所做的任何更改。请务必将所有工作保存到共享网络位置。

  • 用户层不可用(可 定制的消息)

    我们无法附加您的用户层。不会保存您对应用程序设置或数据所做的任何更改。请务必将所有工作保存到共享网络位置。

  • 用户注销后无法重置系统

    此系统未正确关闭。立即注销并与系统管理员联系。

  • 无法执行用户层修复

    修复用户层的尝试失败。Please contact your system administrator.(RealTime Connector 正在等待与 Media Engine 建立连接。无法维护此设备上的 RealTime Connector。与 Media Engine 的通信中断。请与系统管理员联系。)

  • 手动驱动程序加载失败

    为此系统找到的应用程序分层驱动程序无法加载。这可能是由于共享上的驱动程序签名不正确或不正确导致的。请与您的管理员联系以解决此问题。

如何自定义消息

您可以按如下方式自定义通知消息。您输入的消息可以是任何语言。

  1. 以管理员身份登录到管理控制台。
  2. 如果要创建新位置,请单击 添加存储位置
  3. 如果要为现有位置自定义邮件,请单击 “ 编辑存储位置”。
  4. 在添加/编辑存储位置向导中,单击用户层消息选项卡和 覆盖 复选框。
  5. 完全按照您希望的方式输入消息。
  6. 使用 “ 确认并完成 ”选项卡保存您的更改。

修复用户层

通过用户层修复功能,您可以从用户的用户层中删除应用程序及其文件。在将应用交付给已在其用户层本地安装应用程序的用户后,您可以使用此功能。无论是将新应用程序层作为基础映像的一部分还是作为弹性层传递,修复功能都会删除冲突的文件。

  • 示例 1: 您创建一个包含文件 you.txt 的应用层,然后弹性地向用户提供应用程序层。当用户更改文件时,更改将存储在其用户层中。如果它们的更改破坏了应用程序,或者文件已损坏,用户层修复功能允许您通过从用户层中删除问题文件来清理问题文件。然后,用户可以看到作为应用程序层的一部分弹性提供的文件。

  • 示例 2: 用户删除弹性分配给他们的应用程序。由于用户层优先,因此用户应用程序的本地副本被删除后,用户将不再看到该版本的应用程序。 用户会看到分配为弹性层的应用程序层。

  • 示例 3: 用户在本地安装应用程序,过了一段时间,管理员会为同一应用程序创建应用层。用户层修复功能将应用程序安装的任何冲突文件从用户层中删除,以便用户随后可以看到应用程序层中提供的版本。

用户层修复的工作原理

设备会生成用户层修复 JSON 文件,您可以使用这些文件清理或恢复用户层。您可以手动将 JSON 文件复制到需要修复的用户层。

如果网络共享上不存在修复上载文件夹,则会自动创建这些文件夹。设备会将修复 JSON 文件写入文件共享上的以下目录:

<StorageLocationShare>\Unidesk\Layers\App\Repair\
<StorageLocationShare>\Unidesk\Layers\App\PackageAppRules
<!--NeedCopy-->

复目录包含设备知道的每个层的每个版本的 JSON 文件。每当您完成新的应用程序层或其版本时,设备都会生成并上传修复文件。

每个层的修复文件包括:

UserLayerRepair_LayerIdInDecimal_RevisionIdInDecimal.json
UserLayerRepair_<layer id>_<layer version>.json
<!--NeedCopy-->

要在控制台中查看图层 ID,请单击图 选项卡,选择图层,然后单击 “i” 图标。层 ID 与其他层详细信息一起显示。

PackageAppRules 目录包含用户层每个版本的包应用程序规则。

修复层需要多长时间

修复过程时间根据层的大小以及需要删除的对象数量而有所不同。

修复需要装载但没有实际操作需要执行的层会增加大约 5 秒钟的登录过程。当应用程序层包含在图像中时,登录时间减少到 2 秒。

时间因操作而异。对于典型的应用程序层,它的时间不到 10 秒,因此总共为 12—15 秒。

修复用户层

要修复用户的用户层,请执行以下操作:

  1. 确定必须修复的应用程序层的版本。

    • ∂∂.
  2. 找到预生成的 UserLayerRepair 文件。如果文件尚未生成,请联系 App Layering 支持。您的支持工程师可以为您手动生成修复文件。

  3. 将用户层修复文件直接复制到用户的 VHD 位置。下次用户登录时,将执行修复操作。

    如果用户层修复任务完成,将删除 UserLayerRepair.JSON 文件。

    注意:

    如果共享上存在 JSON Rules 文件并且已被用户修改,则不会覆盖该文件。这允许用户根据需要修改这些文件。

用于用户层修复的日志文件

日志文件 ulayersvc.log 包含用户层修复可执行文件的输出。

C:\ProgramData\Unidesk\Logs\ulayersvc.log
<!--NeedCopy-->

清理过程中所做的任何更改都会记录在此处,以及服务记录的任何其他更改。

如果修复失败,会发生什么情况

如果出现故障,用户会收到一条消息,说明修复失败,并且他们应该联系他们的管理员。您可以在与其他存储位置消息相同的位置配置消息。

在以下情况下可能会发生修复失败:

  • 错误的用户层修复 .json 格式(不太可能,因为生成了 JSON 文件)。
  • 找不到指定的应用程序层的 .VHD 或图像内包应用规则文件。
  • 未能附加应用程序层的 VHD 文件。
  • 意外(随机)异常中断修复过程。

如果出现这些问题中的任何一个,UserLayerRepair.JSON 文件不会被删除,并停止处理剩余的 JSON 文件。

要确定失败的确切原因,请查看用户的 ulayersvc.log 文件。然后,您可以允许在后续登录时再次运行修复。假设失败的原因得到解决,修复最终成功,并删除 UserLayerRepair.JSON 文件。