1 简述
相信做过VDI虚拟桌面(现在更多被称之为“云桌面”)或终端标准化的兄弟们对用户配置文件优化应该都不陌生,无数个夜晚,无数次操作,只为了默认配置文件能够兼容应用的一个控件或一个设置。有可能仅仅是一个软件的小Feature或一个B/S系统的小表格,我们可能都要耗费上N久的时间。
• 管理员使用没问题/普通用户就是不行
• UC软件聊天记录莫名丢失
• 软件打开后服务器设置没了
• 用户输入法设置无法保存
• 用户设置的收藏夹重新登录不见了
这些问题是不是都似曾相识呢,是不是好多问题曾经让我们甚是纠结,甚至某些问题贯穿项目始终都没有一个好的解决方法。
我们在项目中折腾了很久,苦恼了很久,探索了很久,最终目的就是为了能够有一个优化的足够好的模板,他能够有适应大部分用户需求的个性化设置,能够流畅运行客户的所有应用程序,能够有一个较好的性能,能够经受时间的考验。不会经常性的时不时让你收不到策略,不会时不时卡住不动让你只能在后台默默操作。那么一个好的模板的核心是什么呢,我们做好的云桌面是为谁用的呢,答案肯定是人,我们从桌面、应用、设置、数据等方面做了很多的优化,做了很多的安全性配置,都是为了让用户能够获得更好的体验,在充分保证公司安全合规的基础上尽可能满足用户的个性化需求,这些配置与设置的核心就是我们的用户配置文件。
2 配置文件介绍与类型
配置文件,顾名思义用于存储配置的文件。当我们第一次登录到Windows操作系统时,系统会为我们创建一个专用的用户配置文件。来保存我们的主题设置(壁纸、色彩)、输入法设置、资源管理器设置属性、打印机连接等。
Windows的配置文件有3种类型
• 本地配置文件:
保存在Windows系统本地,用户第一次登录时会自动创建。本地用户配置文件存储在计算机的本地硬盘上,对本地用户配置文件所做的更改特定于用户和进行更改的计算机。在Windows7后的操作系统默认存储在C:\Users\%Username%目录下。
• 漫游配置文件:
相较于本地配置文件,漫游配置文件信息被存储在集中式服务器共享上。漫游配置文件通常与AD域关联,用户在域内计算机上登录时将检查域内针对用户的设置,如用户配置有漫游配置文件,登录成功后则会将漫游配置文件从中央文件服务器复制到本地计算机。当用户注销时,对漫游用户配置文件所做的更改将与配置文件的服务器副本同步。与本地配置文件不同,用户在域内任意一台计算机登录时都可以通过漫游配置文件获取个人设置,其优点在于,用户无需在网络上使用的每台计算机上都创建配置文件。
• 强制配置文件:
强制用户配置文件是管理员可以用来为用户指定设置的一种配置文件。只有系统管理员才能更改强制用户配置文件。用户注销后,用户对桌面设置所做的更改将丢失。
BTW,其实还有一种配置文件类型叫做临时配置文件,此处我们不做讲述。
3 配置文件组成
接下来呢,让我们来详细了解一下配置文件的组成,看看用户配置文件都包含哪些内容。通常来讲,在Windows操作系统中,用户的配置文件主要由 注册表、包含一系列配置文件的文件夹组成,其中注册表部分主要为HKEY_CURRENT_USER部分的注册表项,配置文件文件夹包含个人数据文件、应用程序文件、系统配置文件等。
配置文件的内容如下图所示:
• 注册表项:
配置文件中的注册表主要有2个文件
文件名称 | 位置 | 注册表项 | 作用 |
---|---|---|---|
Ntuser.dat | 根目录 | HKCU | 当前用户注册表项 |
Usrclass.dat | Appdata\Local\Microsoft\Windows | HKCU\Software\Classes | 包含当前用户所有应用程序运行时必需的信息 |
• 配置文件文件夹:
用户个人配置文件夹的位置由注册表
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders定义,如需更改可修改此注册表项
1) 首先我们分析根目录下的几个主要目录
类型 | 文件夹 | 作用 | 备注 |
---|---|---|---|
个人文件 | Desktop (桌面)Documents(我的文档)Contacts(联系人)Downloads(下载)Favorites(收藏夹)Links(链接)Searches(搜索)Video(视频)Music(音乐) | 主要存储个人数据文件,如放在桌面的文件、我的文档中的文件 | |
应用文件夹 | OneDriveKingdee(金蝶)RTX Files(腾讯通文件)。。。 | 某些应用程序会将自身的DLL文件,程序配置文件,程序缓存文件,程序适用于个人的文件(如聊天记录、文件附件)等放置在个人配置文件夹的根目录中 | 常见类型的B/S软件如金蝶EBS、用友NC |
AppData | AppData | 主要用于存储用户对于操作系统层面的个性化设置、系统对于当前用户的缓存文件、应用程序的配置文件与缓存文件等 | 操作系统:个人证书、壁纸、主题、快捷方式等应用程序:配置文件、缓存文件如Office模板、Office自定义字典、Outlook PST数据文件、JAVA安全性设置、Firefox设置等 |
2) 接下来我们详细分析一下AppData目录中一些常见的文件
应用程序数据(或AppData)文件夹包含程序创建的数据以及用户特定的首选项和配置文件配置。我们安装的每个程序几乎都会在AppData中创建自己的文件夹,并将信息存储在该文件夹中。在普通环境中,用户几乎不用关注此文件夹,但在终端标准化或VDI场景中,我们经常需要进行优化或特殊配置以便使我们的应用程序设置或系统设置能够适用于所有用户,因为在用户配置文件中通常此文件夹会占到我们整个配置文件的非常大的一部分空间。
AppData文件夹分为三个子文件夹:
Roaming文件夹包含可以随用户配置文件在计算机之间移动的数据。
Local文件夹包含无法随用户配置文件一起移动的数据。
LocalLow文件夹包含低级别访问数据,例如在保护模式下运行浏览器时产生的临时文件。
通过3个不同文件夹,各自存储不同类型的数据,可以实现:
• 性能:登录期间更好的性能
• 安全性:根据使用级别隔离应用程序的数据。
文件夹 | 描述与作用 | 备注 |
---|---|---|
Local | 该文件夹主要用于存储不漫游的应用程序数据,包括与安装程序有关的文件夹,变量为%localappdata%。由于是配置文件的一部分,所以配置仅对特定用户有效,其包含的数据默认不能随用户一起移动,因为他特定于当前PC设置,并且通常文件较大无法与服务器同步。使用微软漫游配置文件时默认不会将此目录作为漫游配置文件的一部分。与计算机相关的应用程序数据(例如用户指定的显示器分辨率)存储在此处。此数据不得漫游,因为不同的计算机可能具有不同的监视器。此外,一些应用程序的较大的临时或缓存文件将存放在此处,以最大程度地减少漫游时的下载时间。如IE浏览器的临时文件(HTML、gif等缓存文件)、Microsoft文件夹下的Windows活动历时记录文件。但IE浏览器的一些小的cookie文件或历史记录数据配置会缓存在Roaming文件夹中,以便他们能够随用户漫游。 | 由于部分软件配置文件存储在此文件夹,因此在某些时候我们需要考虑强制同步该文件夹内容 |
LocalLow | LocalLow文件夹包含无法移动的数据。访问级别与频率较低。例如,如果以安全模式运行Web浏览器,则该浏览器将禁止访问LocalLow文件夹中的数据。此外,LocalLow也仅在本地有效,不会在第二台计算机上创建。否则,任何访问LocalLow文件夹的应用程序都可能会失败。 | |
Roaming | Roaming文件夹主要用于用户配置漫游,是一种可以轻松与服务器同步的文件夹。使用此文件夹存储所有的用户自定义应用程序选项与设置。例如,如果用户可以指定要在应用程序中使用的自定义词典或自定义程序属性与配置,则可以将其存储在此处。这样,如果用户在计算机之间漫游,则自定义词典或自定程序属性与配置将会随着用户实现漫游,使用户的自定义程序设置在任意一台域内计算机上登录时都始终可用。 | 使用频率最高,漫游配置文件必须。 |
4 配置文件生成
所有配置文件都会基于一个模板用户配置文件生成,在默认情况下如果未特殊定义,用户第一次登录Windows操作系统时,会将此操作系统的C:UsersDefault本机默认配置文件作为模板配置文件,将其复制后经过处理变为当前用户的配置文件。
除了使用Default默认配置文件作为模板配置文件外,如果使用一些第三方配置文件程序,如Citrix UPM或VMware Persondata等,还可以通过策略指定自定义模板配置文件。
5 模板配置文件制作
模板配置文件的制作主要分为如下3个步骤
1) 标准用户配置
使用一个常规用户作为标准模板用户(通常使用administrator用户),按照用户需求配置如下设置
个性化系统配置:输入法(顺序与列表)、壁纸、主题、系统视觉效果高级设置(Visual Effects)、文件夹属性、桌面系统图标(如 此电脑、文档、控制面板等)、开始菜单、Metro磁贴、任务栏、HKCU所包含的自定义注册表项等。
应用程序设置:安装所有的应用程序,配置应用程序控件(如ActiveX空间等)、配置应用程序设置(服务器属性、文件位置等),检查所有软件的配置位置,确定其是否存在用户配置文件中以及存在用户配置文件的那个位置(如JAVA配置文件存放在AppDataLocalSunJava文件夹中)。
个人文件:需要包含到每个用户配置文件中所存放的自定义的文件夹与文件,如在Documents文件夹中专门放置一个公司文件夹用于特殊软件调用。
2) 生成模板配置文件
标准用户配置完毕后,注销标准用户,使用具有本地管理员权限的其他用户将标准用户的配置文件生成为模板配置文件。
通常使用的方式有:
• 标准的Windows Sysprep CopyProfile参数(强烈推荐)
• Windows Enabler(破解)
• Defprof工具
此三种方式各有利弊,在生产环境中建议使用微软标准的Sysrep方式,此方式调试时间较久,但最为稳定,问题较少。如POC环境,为了提升效率,建议使用Defprof工具。关于三种方式的使用,仅为个人观点,大家可根据喜好使用。
3) 测试与优化
将生成的配置文件作为模板配置文件替换当前系统的C:UsersDefault默认配置文件,使用新用户登录测试,观察新用户是否可以成功使用新的默认配置文件生成自己的配置文件,以及我们在第一步使用标准用户做的系统设置、应用程序设置是否在新用户同样适用。
如部分系统设置有问题,如Visiual Effect的视觉效果,则建议采用重新生成或修改对应注册表的方式修改默认配置文件,修改注册表的方法为在注册表编辑器加载生成模板配置文件中的ntuser.dat文件。如部分应用程序设置有问题,则检查该应用程序的配置存储路径,如存储在AppdataLocal文件夹、AppdataRoaming文件夹或注册表中,然后检查模板配置文件中是否有该项,如无则将标准用户中对应的配置文件或文件夹拷贝到模板配置文件的文件夹中再次进行测试。
配置文件使用无问题后,进行深度优化,删除不必要的文件与文件夹将配置文件优化到足够小,以便达到较好的用户登录体验与性能。
6 漫游模板配置文件优化
下面我们来详细讲一下配置文件的优化,配置文件优化的目的主要在于用户配置文件漫游时尽可能提升用户的登录与注销速度,这其中包含如下几个方面,包括模板配置文件本身的优化与漫游配置文件策略的过滤以及文件夹重定向等。但一切优化的前提是保证用户的个性化需求可以得到满足且软件配置读取正常。
模板配置文件优化:尽可能的缩小模板配置文件的体积,以便用户首次使用时能够较快的登录,且漫游配置文件不会过大,在没有特殊性软件(如设计软件或某些HR系统等需要缓存关键数据库到Appdata的办公软件)时,配置文件优化到大小尽量不超过3MB。在有特殊软件的情况下除去特殊软件本身所耗费空间外,其余大小尽量不超过3MB,特殊软件本身占用空间较大且位于Appdata目录时(超过10MB)应考虑通过mklink或修改默认存储位置(如修改到Documents目录)等方式缩减配置文件体积,理想状态确保最终生成的模板配置文件在10MB左右。
文件夹重定向:在使用漫游配置文件时,建议配合文件夹重定向技术将个人数据文件夹重定向至文件服务器来减小配置文件的体积,如 桌面、文档、下载、收藏夹、搜索、Appdata Roaming(此项酌情考虑,部分软件如搜狗输入法重定向后可能会有问题)、音乐、视频等。
配置文件过滤与排除:在配置文件生成并漫游后,可能会有一些缓存文件(如Appdata\Local中的文件夹)自动漫游到服务器上,使得配置文件过大,或部分我们需要的配置文件被过滤导致部分软件无法使用,我们需要用同步方式来强制同步特定文件或文件夹到服务器上,使用不同的漫游配置文件方式可以设置不同的过滤与策略,其颗粒度也会有所不同。
下面为常见的几个配置文件的处理软件的文件/文件夹排除与同步支持情况
漫游方式 | Microsoft Roaming |
---|---|
默认排除 | 通过注册表项定义HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ExcludeProfileDirs默认过滤文件夹为AppData\Local;AppData\LocalLow;$Recycle.Bin;OneDrive;Work Folders |
排除设置 | 可通过修改注册表添加或删除新的排除项。如不修改默认排除项,建议通过组策略进行设置,组策略位置 “用户配置>管理模板>系统>用户配置文件>不包括漫游配置文件中的目录” |
可设置同步 | 不支持直接设置,如需强制同步默认已经排除的目录中的文件夹,可通过删除过滤项实现同步。 |
漫游方式 | Citrix UPM |
---|---|
默认排除 | 默认过滤Appdata\Local下部分文件夹与Appdata\LocalLow;$Recycle.Bin目录,但默认策略未启用 |
排除设置 | 可通过Citrix Studio中的UPM策略进行设置,过滤策略可设置具体文件或文件夹,颗粒度较细 |
可设置同步 | 可手动启用同步指定文件或文件夹,颗粒度较细,配置较灵活 |
备注 | 使用Citrix环境强烈建议启用UPM |
漫游方式 | VMware Horizon Persona |
---|---|
默认排除 | 默认未排除过滤任何文件夹 |
排除设置 | 可通过策略排除指定文件或文件夹,颗粒度较细 |
可设置同步 | 可手动启用设置同步指定文件或文件夹,颗粒度较细,配置较灵活 |
备注 | 使用VMware Horizon环境强烈建议使用Horizon Persona,同时Horizon Persona还可用于设置Microsoft Roaming Profile策略 |
常规配置文件优化实践
通常在没有特殊软件的普通办公场景(用户需求仅有Microsoft Office、Adobe PDF Reader、解压缩、浏览器、输入法等),模板配置文件中我们可以仅保留常规文件夹与ntuser.dat文件,AppData文件夹中仅保留usrclass.dat文件,这种情况可以保留用户的大多数设置,并且保证模板配置文件在2MB左右。
7 漫游配置文件方案选择
当前可供选择的漫游配置文件方案较多,常用的包括有Microsoft Windows Roaming、Citrix UPM、VMware Persona、Microsoft UPD、FSLogix等,各个方案的简单对比如下:
方案 | 适用场景 | 存储方式 | 优势 | 缺点 |
---|---|---|---|---|
Windows Roaming | AD域物理PCVDI场景(任意基于AD域) | 共享文件夹 | 1) 适用于任何基于AD域的场景,包括物理PC与VDI场景。2) 支持原生强制配置文件。3) 系统自带,无需第三方组件。 | 1) 策略颗粒度不高2) 文件大小不容易控制容易造成用户登录缓慢或注销缓慢3) 系统故障时易造成配置丢失 |
Citrix UPM | VDI场景(仅Citrix) | 共享文件夹 | 1) 策略颗粒度非常好2) 功能支持非常丰富(文件缓存、动态回写、文件/夹排除、文件/夹同步、文件/夹镜像、流式传输)3) 无需过多优化即可提供较好登录与注销性能4) 支持无缝将本地配置文件或Windows Roaming配置文件迁移至UPM5) 支持强制配置文件 | 仅适用于Citrix场景 |
VMware Persona | VDI场景(仅VMware) | 共享文件夹 | 1) 策略颗粒度支持较好2) 功能支持较为丰富(文件/夹排除、文件/夹同步、进程排除、文件/夹后台加载等)3) 支持管理Windows Roaming配置文件 | 1) 仅适用于VMware Horizon场景2) 系统故障时易造成配置丢失 |
Microsoft UPD | VDI场景(仅Microsoft RDS场景) | VHD/VHDX | 1) 所有配置存储在单一虚拟磁盘中较为稳定2) 类似于本地配置文件,用户登录/注销速度快 | 1) 大量的VHD/VHDX带来了维护负担2) 仅支持Microsoft RDS环境3) 无限制的存储易造成VHD/VHDX文件过大 |
FSLogix(微软收购) | VDI场景(任意基于AD域) | 容器化VHDX | 1) 类似于本地配置文件,用户登录/注销速度快2) 基本无需管理,无需考虑排除/同步等,只管使用即可 | 1) 无限制的存储易造成VHD/VHDX文件过大 |
在漫游配置文件方案选择中,可以根据实际情况选择最为合适的漫游方案,通常情况下我们建议Citrix CVAD环境使用Citrix UPM方案,在某些场景下结合WEM以实现更好的用户体验。VMware Horizon环境建议使用Horizon Persona方案,如购买企业版许可建议考虑搭配UEM以实现更好的用户体验。使用其他VDI方案时,如需集中管理用户配置文件,强烈迁移使用FSLogix以实现漫游配置文件的集中管理以及媲美本地配置文件的用户体验,其实使用Citrix CVAD、VMware Horizon、Microsoft RDS云桌面解决方案时也可考虑使用FSLogix,其简化的管理过程与优异的用户体验得到了多数管理员的认可。