部署用户层
用户层保留每个用户的:
-
配置文件设置
-
数据
-
非持久性 VDI 环境中本地安装的应用程序
在映像模板上启用用户层后,使用生成的层化映像预配的系统会为每个用户提供一个用户层。
当用户登录到启用了用户层的桌面时,会创建一个新的搜索索引数据库。该索引包含来自用户层和任何弹性层的搜索信息。搜索功能仅在索引完成后可用。
本主题介绍如何在映像模板上启用用户层以及生成的层化映像。使用这些映像预配的系统会为每个用户提供一个用户层。
用户层类型
您可以启用以下类型的用户层:
-
完整:用户的所有数据、设置和本地安装的应用程序都存储在其用户层上。
-
Office 365:(桌面系统)只有用户的 Outlook 数据和设置存储在其用户层上。
-
会话 Office 365:(会话主机)只有用户的 Outlook 数据和设置存储在其用户层上。
您可以启用完整用户层、Office 365 用户层或会话 Office 365 用户层。完整用户层包含 Office 365/会话 Office 365 用户层保存的所有内容,以及其他应用程序的设置和数据。
注意:
Office 365 和 Session Office 365 已弃用。
要求
启用用户层之前,请务必满足适用于以下用户层类型的要求:
-
所有类型的用户层
-
完整用户层
-
Office 365 和 Session Office 365 用户层
所有用户层
要启用用户层,您需要:
-
足够的网络带宽。带宽和延迟对用户层有显著影响。每次写入都会通过网络进行。
-
为用户数据、配置设置及其本地安装的应用程序分配足够的存储空间。(设备使用主存储位置来打包层、发布分层映像以及提供弹性层。)
完整用户层
-
将配置文件管理与完整用户层结合使用时,必须清除用户注销时删除用户信息的设置。根据您部署设置的方式,您可以使用以下任一方法清除删除:
-
组策略对象。
-
Delivery Controller™ (DDC) 上的策略。
-
Office 365 和 Session Office 365 用户层
-
使用配置文件管理器,例如 Citrix Profile Manager。否则,Outlook 会假定每个登录用户都是新用户,并为其创建操作系统文件。
-
Office 层必须包含在映像模板中并部署在分层映像中。但是,您可以将其他弹性层与 Office 365 用户层一起使用。
-
Microsoft Office 仅作为已发布映像中的应用程序层受支持,而不是作为弹性层。
-
对搜索索引文件默认位置的任何更改都不会保留在 Office 365 层中。
-
此功能已针对每个用户一次一个桌面(单点登录)进行了测试。
注意:
Office 365 和 Session Office 365 已弃用。
兼容性
以下平台支持完整用户层:
-
操作系统: 所有操作系统都必须配置为单用户模式才能与用户层配合使用。服务器不能在多用户模式下使用。不支持会话主机上的用户层。
-
Windows 10 64 位版本
-
Windows 11,64 位(仅当部署到支持卸载合成的平台时)
-
Windows Server 2016,仅限单用户模式
-
Windows Server 2019,仅限单用户模式
-
-
发布平台: 以下发布平台支持用户层。
-
Citrix 虚拟桌面™
-
用户层上不支持的应用程序
用户层不支持以下应用程序。请 不要 在本地安装这些应用程序:
-
企业应用程序:MS Office 和 Visual Studio 等企业应用程序必须安装在应用程序层中。用户层基于与弹性层相同的技术。与弹性层一样,切勿将用户层用于这些企业应用程序!
-
使用驱动程序存储的驱动程序的应用程序。示例:打印机驱动程序。注意:您可以使用组策略使打印机可用。请参阅下一节中的 GPO 安装的打印机。
-
修改网络堆栈或硬件的应用程序。示例:VPN 客户端。
-
具有启动级驱动程序的应用程序。示例:病毒扫描程序。
-
需要您添加本地用户或组的应用程序。作为安装应用程序的一部分添加的本地用户和组仅保留在操作系统层中。考虑将应用程序安装在将包含在基础映像中的层上,并将所需用户或管理员添加到操作系统层。
Windows 更新
必须在用户层上禁用 Windows 更新。
Outlook 商店加载项
Citrix Profile Management 禁用商店加载项。
首次启动 Outlook 时,功能区上的“商店/加载项”图标会显示一个包含长列表加载项的窗口。在首次登录期间,如果您安装加载项,它们会在后续登录时显示在功能区上。如果您不安装加载项,“商店/加载项”图标会显示一个空白窗口。
GPO 安装的打印机
对于运行 Windows 10 的非持久性桌面上的用户,您可以使用组策略安装打印机。启用策略后,打印机将列在用户的“设备和打印机”、应用程序打印机设置和设备管理器中。
要设置 GPO 安装的打印机:
-
在映像模板中启用用户层。
-
确保桌面已加入域(在平台层上)。
-
创建组策略以部署每个网络打印机,然后将其分配给计算机。
-
以域用户身份登录时,验证打印机是否列在“设备和打印机”、“记事本”和设备管理器中。
用户层格式
用户层虚拟磁盘使用 VHDX 格式创建。您仍然可以使用现有的用户层 VHD 文件,无需转换或重新创建。但是,当 VHD 和 VHDX 文件同时存在于同一文件夹中时,VHDX 文件优先。
如何覆盖用户层虚拟磁盘创建的 VHDX 格式
您可以更改行为以强制创建的用户层使用 VHD 格式。要覆盖此行为,请使用以下系统注册表参数:
-
路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ulayer -
名称:
DefaultUserLayerVHDXDisabled -
类型:
DWORD -
数据:
1
用户层/UPL 空间回收
您可以使用用户层/UPL 空间回收在每次用户注销时自动优化 VHDX 文件。
如何启用用户层/UPL 空间回收
在启用用户层/UPL 空间回收之前:
-
优化驱动器服务
defragsvc必须启用并运行 对于现有操作系统层,此服务已禁用。 -
Citrix 建议在启用此功能之前创建新的操作系统层版本。
您可以通过以下任一方式启用用户层/UPL 空间回收:
-
使用 Citrix Studio 管理
-
使用 Windows 注册表编辑器
-
路径:
HKLM\SOFTWARE\Policies\Citrix\UserPersonalizationLayerConfig -
名称:
UserLayerCompactionEnabled -
类型:
DWORD -
数据:
1(默认值:0)
-
此功能默认情况下处于禁用状态。
在分层映像上启用用户层
要部署用户层,您可以使用映像模板中的设置启用这些层。有关详细步骤,请参阅创建或克隆映像模板。本文的其余部分提供了有关用户层的大小调整、存储、安全配置、移动和修复的详细信息。它还涵盖了为最终用户自定义通知的步骤。
用户层位置
当映像模板启用了用户层时,您发布的映像会保留用户的数据、设置和本地安装的应用程序。
启用用户层后,您必须为这些层添加存储位置。
重要提示:
不要允许用户层保存在设备的共享主文件上。否则,空间可能会因以下原因而耗尽:
-
升级软件。
-
为用户提供弹性层。
-
保存您正在移动到没有受支持连接器的虚拟机管理程序的文件。
添加到设备的第一个存储位置将成为未与任何其他存储位置关联的用户层的默认位置。当您添加更多存储位置时,它们将按优先级顺序列出。
您可以将用户组分配到您添加的每个存储位置。
当用户属于多个组时,用户层存储在哪里
如果用户属于多个组,并且这些组被分配到不同的存储位置,则该用户的用户层将存储在优先级最高的存储位置。
如果在用户的用户层保存到最高优先级位置之后更改了分配给该用户的存储位置的优先级顺序,则在此之前保存的数据将保留在原始位置。为了保留该用户的用户层,您必须将其用户层复制到新的最高优先级位置。
如何在特定映像上指定用户层文件共享位置
如何指定自定义用户层路径
您可以通过在
HKLM\Software\Unidesk\Ulayer 密钥中创建名为 CustomUserLayerPath 的 REG_SZ 值来设置自定义路径。HKLM\Software\Unidesk\Ulayer 密钥可以包含环境变量和 Active Directory (AD) 属性。
在
CustomUserLayerPath 值中,所有系统变量都可以展开,但唯一可以展开的用户变量是 %USERNAME% 和 %USERDOMAIN%。完整路径为:
<CustomUserLayerPath>\<OSID_OSNAME>
如果使用 GPO 设置自定义用户层路径,请使用
%<USERNAME>% 和 %<USERDOMAIN>% 以防止 GPO 展开路径。
-
如果定义了
CustomUserLayerPath,则使用它而不是任何其他路径。 -
如果
CustomUserLayerPath未定义,则使用UserLayerSharePath,它位于同一密钥中。 -
如果
UserLayerSharePath未定义,则使用 App Layering 设备 JSON 中列出的StorageLocation。您可以在管理控制台的“系统 > 用户层存储位置”设置中编辑UserLayerSharePath。 -
如果 App Layering 设备 JSON 中未列出
StorageLocation,则使用RepositoryPath。您可以在与CustomUserLayerPath和UserLayerSharePath相同的注册表位置编辑RepositoryPath。 -
定义
CustomUserLayerPath后,创建用户层的路径是展开的路径加上\<OSID_OSNAME>。所有其他路径都是共享路径,它们将附加到\Users\<Domain_UserName>\<OSID_OSNAME>。
如果您使用 AD 属性,则属性必须用哈希符号括起来(例如,#aAMAccountName#)。自定义 AD 属性可用于定义组织变量,例如位置或用户。属性区分大小写。
示例:
-
\\server\share#sAMAccountName#将用户设置存储在 UNC 路径中 -
\\server\share\JohnSmith(如果#sAMAccountName#为当前用户解析为 JohnSmith)
在设备上创建用户层的位置
在设备的网络文件共享中,用户层是在 Users 文件夹中创建的。例如:
\MyServer\\*MyShare*\Users
每个用户在 Users 目录中都有自己的目录。用户目录的命名方式如下:
Users\\*DomainName_username*\\*OS-Layer-ID-in-hex*_*OS-Layer-name*\\*username*.vhd
例如:
-
用户登录名:
jdoe -
用户域:
testdomain1 -
操作系统层:MyOSLayer(ID 为十六进制格式:123456)
-
用户层创建位置:
\MyServer\MyShare\Users\testdomain1_jdoe\123456_MyOSLayer\jdoe.vhd
用户可以访问其用户层的位置
创建完整用户层后,用户可以访问整个 C:\(受 Windows 权限和公司目录安全策略的约束)。
创建 Office 365 层时,用户层目录将重定向到 Office 365 层:
C:\user\\<username\>\Appdata\local\Microsoft\Outlook
添加存储位置
要为映像的用户层添加存储位置:
-
登录管理控制台。
-
选择 系统 > 用户层存储位置。将显示文件共享列表,但不包括设备的主文件共享。
-
选择 添加存储位置,然后为新位置输入名称和网络路径。
-
在分配下,单击添加组。
-
展开目录,选择所需用户,然后单击保存。
-
单击确认并完成以添加存储位置。
添加存储位置后,必须设置用户层文件夹的安全性。
配置用户层文件夹上的安全设置
您可以为用户层指定多个存储位置。对于每个存储位置(包括默认位置),您都需要创建一个
\Users 子文件夹并保护该位置。
域管理员必须将每个用户层文件夹的安全性设置为以下值:
| 设置名称 | 值 | 应用于 | |
|---|---|---|---|
| 创建者所有者 | 修改/删除子文件夹和文件* | 仅子文件夹和文件 | |
| 所有者权限 | 修改 | 仅子文件夹和文件 | |
| 用户或组 | 创建文件夹/追加数据;遍历文件夹/执行文件;列出文件夹/读取数据;读取属性 | 仅选定文件夹 | |
| 系统 | 完全控制 | 选定文件夹、子文件夹和文件 | |
| 域管理员和选定的管理员组 | 完全控制 | 选定文件夹、子文件夹和文件 |
*在某些服务器上,创建者所有者需要删除子文件夹和文件(一项高级权限),以便 App Layering 可以在用户层修复后进行清理。
配置用户层文件夹上的安全性:
-
登录到管理控制台。
-
单击 系统 > 用户层存储位置。显示的文件共享是为用户层定义的存储位置。假设您已定义了三个存储位置,以便您可以将 Group1 和 Group2 的存储与组织中其他所有人的存储分开管理: `
-
默认位置 -
\\MyDefaultShare\UserLayerFolder\ -
组1 -
\\MyGroup1\Share\UserLayerFolder\ -
组2 -
\\MyGroup2\Share\UserLayerFolder\
注意: 设备的用于存储操作系统、应用程序和平台层的主文件共享未列为用户层存储位置。有关 App Layering 文件共享的更多信息,请参阅 设置文件共享。 -
-
在每个文件共享下创建
\Users子目录:
\\MyDefaultShare\UserLayerFolder\Users\
\\MyGroup1Share\UserLayerFolder\Users\
\\MyGroup2Share\UserLayerFolder\Users\
-
将上述安全设置列表应用于 \Users 下的每个子目录。
将用户个性化层 Studio 策略应用于用户层
在分层映像上启用用户层后,您可以通过配置相应的 Citrix Studio 策略来覆盖用户层的默认存储库路径和层大小:
-
用户层存储库路径: 定义在网络上访问用户层的位置。
-
用户层大小 GB: 定义允许用户层磁盘增长的最大大小。
如果发布的映像正在运行受支持的 VDA 版本,并且已定义这些策略,则策略中定义的路径和大小将获得最高优先级。
分配的用户层大小增加将在用户下次登录时生效。分配的用户层大小减少不会影响现有用户层。
定义映像用户层的 Studio 策略
要配置分层映像用户层的 Citrix Studio 策略:
-
在 Citrix Studio 中,在导航窗格中选择策略:

-
在“操作”窗格中选择创建策略。“创建策略”窗口随即出现。
-
在搜索字段中键入“用户层”。以下两个策略将显示在可用策略列表中:
-
用户层存储库路径
-
用户层大小 GB注意:分配的用户层大小增加将在用户下次登录时生效。分配的用户层大小减少不会影响现有用户层。
-
-
单击用户层存储库路径旁边的选择。“编辑设置”窗口随即出现。

-
在“值”字段中输入格式为
\\server name or address\folder name的路径,然后单击“确定”:
-
可选:单击“用户层大小(GB)”旁边的“选择”:

-
此时将显示“编辑设置”窗口。
-
可选:将默认值“0”更改为用户层可增长的最大大小(以 GB 为单位)。单击“确定”。注意:如果保留默认值,则最大用户层大小为 10 GB。
-
单击“下一步”以配置用户和计算机。单击此图像中突出显示的“交付组分配”链接:

-
在“交付组”菜单中,选择上一节中创建的交付组。单击“确定”。

-
输入策略名称。选中复选框以启用策略,然后单击“完成”。

将现有用户层移动到新的存储位置
将每个用户层存储位置复制到其新位置:
-
确保用户层未在使用中。如果用户在您移动其用户层之前登录,则会创建一个新的用户层。数据不会丢失,但如果发生这种情况,请务必:
-
将新创建的用户层移动到新目录。
-
保留用户的 ACL。
-
-
浏览到包含用户层 VHDX 或 VHD 文件的目录。
-
使用以下命令,将每个用户层 VHDX 或 VHD 文件从以前的位置复制到新位置。
xcopy Domain1\User1 Domain1_User1\ /O /X /E /H /K
-
验证以下目录及其中的文件上的所有权限是否正确:
\\\Root\Engineering\Users
\\\Root\Engineering\Users\Domain1_User1\\...
\\\Root\Engineering\Users\Domain2_User2\\...
如果您允许用户创建用户层
如果您选择允许用户创建用户层,则必须手动清理共享中的原始目录和文件。
用户层大小
默认情况下,映像的用户层允许的磁盘空间为每个层 10 GB。
您可以通过以下方式更改默认用户层大小:
-
为用户层共享定义配额
-
设置注册表覆盖
使用 Office 365 用户层时,Outlook 层默认为 10 GB,但 Outlook 会根据可用磁盘空间量设置卷大小。Outlook 会根据分层映像上的可用空间使用更多或更少的空间。报告的大小基于分层映像。
优先顺序
部署用户层时,设备使用以下优先顺序来确定用户层大小:
-
使用以下任一方法设置的用户层大小的磁盘配额:
-
Microsoft 文件服务器资源管理器 (FSRM)
-
Microsoft 配额管理器
-
-
用户层磁盘的注册表覆盖: (HKLM\SOFTWARE\Unidesk\ULayer\DefaultUserLayerSizeInGb)
-
默认用户层大小 (10 GB)
更改用户层大小
增加到分配的用户层大小将在用户下次登录时生效。减少到分配的用户层大小不会影响现有用户层。
为用户层磁盘定义磁盘配额
您可以使用 Microsoft 的任一配额工具为用户层磁盘大小设置硬性配额:
-
文件服务器资源管理器 (FSRM)
-
配额管理器
配额必须在用户层目录上设置,名为 Users。
注意:
更改配额(增加或减少)仅影响新的用户层。现有用户层的最大大小已在之前设置,并且在配额更新时保持不变。
设置最大大小注册表覆盖
您可以使用托管计算机上的注册表覆盖默认用户层最大大小。以下注册表项是可选的。您无需为正常操作配置这些项。如果您需要其中一个项,请使用层或 GPO/GPP 手动添加。
注册表根:HKLM\Software\Unidesk\Ulayer
| 键 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| UseQuotaIfAvailable | 字符串 | 是; 否 | True 表示启用配额的发现和使用。False 表示禁用。 |
| DefaultUserLayerSizeInGb | 双字 | 用户定义 | 用户层的大小(以 GB 为单位,例如 5、10、23 等)。如果未指定,则默认值为 10。 |
| QuotaQuerySleepMS | 双字 | 用户定义 | 创建用户层目录后,在检查其是否具有配额之前等待的毫秒数。某些配额系统(例如 FSRM)需要时间才能将配额应用于新目录。默认配额为 1000。 |
修复用户层
用户层修复功能允许您从用户的用户层中删除应用程序及其文件。在将应用程序交付给已在其用户层本地安装该应用程序的用户后,您可以使用此功能。无论您是将新的应用程序层作为基础映像的一部分交付,还是作为弹性层交付,修复功能都会删除冲突文件。
-
示例 1: 您创建了一个包含文件 you.txt 的应用程序层,并以弹性方式向用户提供该应用程序层。当用户更改文件时,更改会存储在其用户层中。如果他们的更改导致应用程序损坏,或者文件已损坏,用户层修复功能允许您通过从用户层中删除问题文件来清理该文件。然后,用户会看到作为应用程序层一部分以弹性方式提供的文件。
-
示例 2: 用户删除了弹性分配给他们的应用程序。由于用户层优先,一旦用户的应用程序本地副本被删除,用户将不再看到该版本的应用程序。用户会看到作为弹性层分配的应用程序层。
-
示例 3: 用户在本地安装了一个应用程序,不久之后管理员为同一应用程序创建了一个应用程序层。用户层修复功能会从用户层中删除该应用程序安装的任何冲突文件,以便用户随后看到应用程序层中提供的版本。
用户层修复的工作原理
设备会生成用户层修复 JSON 文件,您可以使用这些文件来清理或恢复用户层。您需要手动将 JSON 文件复制到需要修复的用户层。
如果网络共享上不存在修复上传文件夹,则会自动创建它们。设备会将修复 JSON 文件写入文件共享上的以下目录:
<StorageLocationShare>\Unidesk\Layers\App\Repair\
<StorageLocationShare>\Unidesk\Layers\App\PackageAppRules
“Repair”目录包含设备所知晓的每个层的每个版本的 JSON 文件。每当您最终确定新的应用程序层或其版本时,设备都会生成并上传修复文件。
每个层的修复文件包括:
UserLayerRepair_LayerIdInDecimal_RevisionIdInDecimal.json
UserLayerRepair_<layer id>_<layer version>.json
要在控制台中查看层 ID,请单击“Layer”选项卡,选择该层,然后单击“i”图标。层 ID 将与其他层详细信息一起显示。
“PackageAppRules”目录包含用户层的每个版本的软件包应用程序规则。
修复层需要多长时间?
修复过程时间因层的大小以及需要删除的对象数量而异。
对于需要挂载但没有实际操作要执行的层修复,登录过程会增加约 5 秒。当应用程序层包含在映像中时,登录时间会减少到 2 秒。
时间因操作而异。对于典型的应用程序层,它少于 10 秒,因此总共 12-15 秒。
修复用户层
要修复用户的用户层,请执行以下操作:
-
识别必须修复的应用程序层的版本。
-
找到预生成的 UserLayerRepair 文件。如果文件尚未生成,请联系 App Layering 支持。您的支持工程师可以为您手动生成修复文件。
-
将用户层修复文件直接复制到用户的 VHDX 或 VHD 位置。用户下次登录时,将执行修复操作。如果用户层修复任务完成,则
UserLayerRepair.JSON文件将被删除。注意:如果共享上存在 JSON 规则文件并已被用户修改,则不会被覆盖。这允许用户根据需要修改这些文件。
用户层修复的日志文件
日志文件 ulayersvc.log 包含用户层修复可执行文件的输出。
C:\ProgramData\Unidesk\Logs\ulayersvc.log
清理期间进行的任何更改以及服务记录的任何其他更改都将记录在此处。
如果修复失败会怎样?
如果发生故障,用户会收到一条消息,告知修复失败,并且他们必须联系其管理员。您可以在与其他存储位置消息相同的位置配置此消息。
修复失败可能发生在以下情况:
-
UserLayerRepair.json 格式错误(不太可能,因为 JSON 文件是生成的)。
-
找不到指定的应用程序层的 .VHD 或映像内 package_app_rules 文件。
-
无法附加应用程序层的 VHD 文件。
-
意外(随机)异常中断修复过程。
如果发生任何这些问题,UserLayerRepair.JSON 文件将不会被删除,并且剩余 JSON 文件的处理将停止。
要确定失败的确切原因,请查看用户的 ulayersvc.log 文件。然后,您可以允许修复在后续登录时再次运行。假设故障原因已解决,修复最终会成功,并且 UserLayerRepair.JSON 文件将被删除。