Windows Server 2016 安装有 3 个远程桌面服务 (RDS) 会话主机服务器和一个域控制器。为 RDS 用户配置了一个用户组,其中包含一些设置的组策略。
问题:
使用域管理员帐户登录到其中一个 RDS 会话主机服务器,更改 c:\Program Files 下某个文件夹中的文件。如果我现在使用相同的域管理员登录到另一台服务器,则该文件也会在该服务器上发生更改!我根本没有碰过那台服务器!
(我确实知道如果我更改与用户相关的文件就会发生这种情况,例如在 c:\Users\ 下的用户配置文件夹中,这些是某种漫游配置文件。)
这是否意味着“c:\Program Files\”现在也包含在用户配置文件中...?这完全出乎意料,我找不到任何提示或文档来证明这一点。
这非常烦人,因为我并不总是希望这些更改完全相同。它“可能”对一组 RDS 服务器有用,但它很诡异 - 这种“远距离操作”。
当我使用本地管理员登录时,我更改的文件没有变化。所以看起来整个 C 盘都已成为用户配置文件的一部分……?
相反,在本地登录中在“c:\Program Files”文件夹中创建的文件在任何域登录中都是不可见的,反之亦然。
DFS(分布式文件系统)未配置。除非它默认配置自己?这是从头开始的全新安装。
重现步骤:
log in with a local admin login
create a folder "test-local" under c:\Program Files
create a text file "test-local.txt" in that folder
sign out
log in with a domain account (domain admin)
look into c:\Program Files - the folder "test-local" is not present
create a folder "test-domain" under c:\Program Files
create a text file "test-domain.txt" in that folder
sign out
log back in with the local admin account
the folder "test-domain will not be present, you'll see only the "test-local" folder
答案1
如果你尝试在未提升权限的情况下修改 C:\Program Files 中的文件,并且开启了 UAC,Windows 会“虚拟化”写入操作,实际写入到相关路径而非C:\Users\you\AppData\Local\VirtualStore
真实位置,并在资源管理器中进行映射,这样它看起来就像您的更改已成功一样。这是为了向后兼容喜欢将数据写入 Program Files 的旧程序(在 Vista 中很糟糕且已弃用)。
很可能这个 VirtualStore 路径是漫游配置文件或等效文件的一部分,然后漫游到其他服务器,因此您的更改会跟随您。尽管 AppData 的本地部分会漫游似乎很奇怪。不过,还是有一些值得思考和进一步挖掘的东西。
解决方法是,确保您正在以提升的权限运行您正在编辑/创建的文件。