使用用户体验虚拟化UE-V功能同步Windows和软件的配置

众所周知域账户没有Microsoft账户那么舒服的同步功能当然这也意味着底裤没那么轻易能卖出去了Azure AD的账户要开同步功能则得乖乖给微软爸爸交钱每个用户$6/mo贵死了那么有没有办法在域账户上实现类似的功能并且成本还不那么高的呢当然是有的就是现在已经是Windows自带功能了的User Experience VirtualizationUE-V

概念

UE-V的工作机理很简单首先你得有一个同步数据存储位置可以在本地或者在网络存储上每当退出特定程序锁屏或注销的时候这些程序的数据会被存储到这个预定义的位置上每当用户登录解锁或启动特定程序之前如果存储区的数据发生了改变那么这些改变会被同步应用到程序自身的数据上

UE-V分为数个组件

  • App Agent用来同步和应用UE-V设置
  • 一个Service用来监视进程的新建和退出从而判定什么时候需要同步数据
  • 一个Sync Provider用来设定同步数据存储位置处理网络连接和缓存
  • 还有一些driver之类的东西

准备工作

使用何种Sync Provider

根据所需同步方式的不同你有三个选项

  • SyncProvider是默认选项可以用于本地文件系统和网络存储带缓存功能如果连不上文件系统那么会使用自己缓存的数据
  • None用于本地文件系统如果你确保这台机子一直连着特定网络的话网络存储也行不带缓存功能一旦文件系统丢失就直接返回失败
  • ExternalSyncProvider适用于本地文件系统并且有第三方程序处理对该文件系统的同步的情况例如OneDrive或者其它网盘服务的同步文件夹

支持的操作系统

最新的UE-V仅支持Windows 10 Enterprise 1607及更高版本不支持其它SKU如果你打算使用低版本的UE-V1.x2.0或者2.1你需要下载Microsoft Desktop Optimization Pack并且参照旧版本的文档进行部署

设置同步存储区

用来存储用户目录的存储区需要特殊的权限设定把文件系统ACL设为Everyone都有所有权限会导致UE-V无法启动请严格参照下文的权限完成设置

使用SMB Share作为同步存储区

例如我们用 \server\uev 作为同步存储区每个用户将会获得自己的文件夹 \server\uev\username 这个文件夹会被UE-V Agent自动创建那么需要如下设置

  1. 创建一个叫做UE-V Users的用户组名字随意把需要开启UE-V功能的用户加入到该用户组
  2. 开启该文件夹的SMB共享并且设置SMB权限
    • UE-V UsersFull Control
    • 删掉Everyone的所有权限

  3. 设置文件系统ACL权限
        • 禁用继承
        • UE-V Users用户组仅对当前文件夹的列目录和新建文件夹权限基础权限全部删掉
        • 其余权限可以全部删掉Domain Admins可以留一个Full controlCREATOR OWNER的权限建议删掉Everyone的权限一定要删掉

      也就是说最后ACL权限看起来应该差不多这样的

那么同步存储区就设置完毕了

使用本地文件夹作为同步存储区

就随便创建个文件夹可选创建在网盘的同步文件夹里面

设置和启用UE-V服务

启用UE-V服务之后需要重启 Get-UevStatus 如果返回 UevRebootRequired=True 那么则需要重启才能生效

使用组策略

一条注册表项 HKEY_LOCAL_MACHINE\Software\Microsoft\UEV\Agent\ConfigurationkeyRepositoryOwnerCheckEnabled类型为 DWORD值为 1

其它配置均在 Computer Configuration\Policies\Administrative Templates\Windows Components\Microsoft User Experience Virtualization 下

必须设置的项有

  • Use User Experience Virtualization (UE-V)Enabled
  • Enable UEVEnabled
  • Settings Storage Path设置到你的同步文件夹
    • 如果多用户共用同一个SMB存储区那么需要设置成类似 \\server\uev\%username% 的格式
    • 否则就直接设随便一个文件夹或者UNC路径皆可
  • Configure Sync Method如果你使用第三方同步软件做设置同步那么需要设置成ExternalSyncProvider里面其它设置均是无效的

推荐设置的项有

  • Do not synchronize Windows Apps建议设为Disabled
  • Sync Unlisted Windows Apps建议设为Enabled
  • Sync Windows settings建议全部设为Enabled

Tray IconNotification啊以及Contact之类的都已经没用了就没必要去设置了Settings template catalog path我设置了但是好像没什么用文档和各种资料对此也各执一词你可以自己试试是否有用

另外有两条设置是没法通过组策略配的建议在每台设备上手工设置一下可以用组策略的执行程序功能

使用PowerShell

当然你也可以把所有选项在一行写完啦

注册UE-V Template

UE-V通过一系列描述文件来定义哪个程序启动的时候需要监视和同步哪些文件以及一些同步行为这些描述文件被称为templateWindows 10 1607开始UE-V不会默认注册系统自带的template因此需要自己注册一下

我一般用以下脚本来定时注册所有template

如果有些template已经注册过那么会报错不用管如果有更新会自动更新

至于template哪里去找呢有那么几个选项

如果你打算把template文件夹放在SMB共享上那么需要配置合适的权限请参考该节34

调试

以上操作做完以后理论上UE-V就应该自动能用了记得默认设置下只有在用户登录注销锁屏和解锁的时候才会触发同步其它情况下大约一小时同步一次另外如果你一次启用了很多台设备的UE-V并且它们现有的配置都不太一样的话第一天不同步或者配置互相覆盖是很正常的事情哦等一天基本上就好了

如果你想研究一下同步数据的格式那么可以前往你的同步文件夹数据在 \server\uev\your_username\SettingsPackages注意 SettingsPackages 是个隐藏文件夹我也不知道为啥要这么设计一开始总觉得文件夹是空的这是不是哪里配坏了

如果本机UE-V Service坏了那么事件查看器里面有相应的日志记得把调试日志打开View菜单-Show Analytic and Debug Logs勾选上然后启用所需的Debug日志


参考资料

发表回复

您的邮箱地址不会被公开 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论了解你的评论数据如何被处理