考虑以下场景:
3 台 Windows 服务器(Server 2016 Standard)加入域。
使用域管理员帐户登录 server1。更改 c:\Program Files 子文件夹中的配置文件(例如 c:\Program Files\Mozilla Firefox\defaults)。并在同一目录中添加一个新文件。
如果我现在使用相同的域管理员帐户登录到其他 2 台服务器(server2 或 server3)中的任何一台并浏览到相同的文件夹(例如 c:\Program Files\Mozilla Firefox\defaults),则该文件也会在那里被修改,时间戳和内容与 server1 上的相同。在 server1 上创建的新文件也存在于 server2 上。
与server3相同。
但是,如果我使用另一个用户帐户(例如常规域用户)登录到该服务器,则该文件不会更改,并且新文件也不存在。
那么看起来整个 C 盘现在都是用户配置文件的一部分?
我必须补充一点,有时新创建的文件确实会出现在其他用户帐户中。
我的问题:
在较新的 Windows 服务器版本中,整个 C 盘现在是否已成为用户配置文件的一部分?
我在哪里可以找到 Microsoft 的文档?谷歌搜索没有找到任何结果,但我真的不知道该找什么。听说有些传言说 Vista 之后就是这样,但文档在哪里,预期的行为是什么?如果这是真的,那将是一个巨大的变化。
这真的应该发生吗?还是我的设置出了问题?那我该如何修复它?
关于这个问题,有时新创建的文件会显示在另一个用户帐户中,有时却不会 - 应该发生什么,不应该发生什么?例如,预期的行为是什么?
作为管理员,我该如何更改 C 盘上的随机文件,尤其是系统文件或程序文件,以便它们真正保留并传输给其他用户?毕竟,这是使用管理员帐户登录的唯一目的,这样我就可以进行所有用户都会受到影响的更改!
这正是我遇到的问题 - 用户看不到对 Firefox 配置文件的更改,并且 Firefox 无法识别新创建的文件,并抱怨它无法读取配置文件。
(注意 - 如果它有任何重要性 - 这 3 台服务器是 RDS 场的会话主机)。
答案1
你很可能会陷入UAC 虚拟化。
UAC 虚拟化适用于为 Windows Vista 之前的 Windows 版本设计的应用程序。这些应用程序通常假设它们以管理员权限运行,当它们尝试写入通常仅限于管理员的文件或注册表位置时,它们希望这些写入能够成功。因此,UAC 虚拟化通过秘密地将这些写入重定向到用户配置文件内的另一个位置来让这些写入成功。当应用程序稍后尝试读取文件或注册表项时,会发生相反的情况:如果文件或项存在于重定向位置,则使用它而不是管理位置中的文件或项。
因此基本上,当您最初尝试在任何地方进行更改时Program Files
,您用于进行这些更改的应用程序(可能是 Explorer)没有被提升(以管理员身份运行)。因此 Windows 会默默地让您进行更改,而只是将它们写入您的个人资料。
这些变化也出现在其他服务器上的原因可能是因为您的个人资料会跟随您漫游到其他服务器。
解决方案是从配置文件中的虚拟存储中删除文件。然后使用提升的进程重新应用更改。更好的是,由于您正在讨论具有多个服务器需要进行更改的农场类型场景,因此请改用组策略。