我在 Ubuntu 14.04 上的 VMware 上运行 Windows 7 Pro 虚拟机,并想将 Win7 的 CSC(用于离线文件的客户端缓存)移动到 Linux 主机上的数据分区。这是一个本地卷,但 Windows 将其视为网络卷。
可用的在线资源建议两种方法,但两种方法(已实施)似乎均未起作用。
第一种方法是禁用脱机文件,删除 C:\Windows\CSC 及其子目录,创建指向新位置的目录连接,然后重新启用脱机文件。此方法失败,因为目录连接只能引用本地卷,而使用指向主机卷的目录符号链接(mklink /d,而不是 mklink /j)时,CSC 不会重建。
第二种方法是清除 CSC,然后创建 HKLM/System/CurrentControlSet/Services/CSC/Parameters/CacheLocation = [目标目录]。这样可以防止 Win7 重新启动。[幸好它只是一个虚拟机,我只需点击几下鼠标就可以重新克隆。]
因此,问题是,是否有可能以及如何将 Windows 7 Pro 虚拟机的 CSC 移动到主机的卷。任何想法都将不胜感激。
答案1
我从未尝试过这样做,但我强烈怀疑这是不可能做到的。
VM 内的 VMWare Tools “伪造”了对主机的网络访问,即使 VM 没有网络访问权限,您仍然可以访问主机(通过 UNC 路径),这证明了这一点。
CSC.sys 是一个低级系统驱动程序,与网络堆栈处于同一级别。我怀疑它首先加载是为了执行其任务,并且它足够聪明,能够知道本地卷和网络路径(甚至是“伪造的”)之间的区别,因为这就是它存在的全部意义。缓存位置应该是在网络中断时保证访问的位置。该参数的存在只是为了在空间受限的 C: 驱动器的情况下将其放置在不同的本地卷上。
就操作系统而言,将缓存位置放在网络驱动器上(即使是伪造的 VMWare 网络驱动器)会造成时空连续体的裂痕。这可能是 Windows 无法启动的原因。没有人会想到要纠正这个错误,因为它毫无意义(毕竟,理论上你可以隔离客户机和/或卸载 VMWare Tools,而且你也会失去对主机卷的访问权限)。
此外,NTFS 连接不如 *nix 硬链接和符号链接那么可靠。许多程序都无法被它们欺骗。在 Windows Vista 发布之前,甚至 Windows 资源管理器也不知道如何处理它们,而这个问题得到解决的唯一原因是微软开始使用它们来兼容 Windows XP。
如果你确实设法以某种方式完成这项工作,我很想知道你是怎么做到的。