两周前,我们的 IT 部门将一个巨大的网络文件夹从旧服务器迁移到新服务器。例如,旧文件夹在
\\oldserver\ourfolder
和新的
\\newserver\ourfolder
请注意,旧服务器仍在使用中,并在我们公司的网络中可见,\\oldserver\ourfolder
已被存档并从服务器中删除。
现在我们发现有几个文件(实际上是一些专有二进制格式的 CAD 文件)具有指向旧文件夹位置的硬编码引用。由于有多个这样的文件,我们想编写一个程序来将这些引用更改为新位置。不幸的是,CAD 系统的 VBA 解释器仅在引用的文件在旧网络路径下可见时才允许这样做。否则,它将停止执行并显示错误消息
因此,我们这里需要一种方法来将“oldserver”设为“newserver”的别名。这应该只是暂时的,并且只适用于一台机器(Windows 7 客户端),所以我们的第一个想法是使用和hosts
文件lmhosts
来实现这一点。但这显然行不通。我们添加了一行形式
<new.server.ip.address> oldserver
到 hosts 文件和
<new.server.ip.address> oldserver #PRE
到 lmhosts 文件。ping oldserver
然后显示新的 IP 地址,但这对共享网络文件夹没有任何影响,例如由 Windows 资源管理器或其他应用程序(如我们的 CAD 应用程序)显示的文件夹。
我们尝试的第二件事是在本地计算机上设置一个独立的 DNS 服务器,旧服务器指向新服务器的 IP 地址,并使用“127.0.0.1”作为首选 DNS(不,我们没有忘记通过 刷新 DNS 缓存ipconfig /flushdns
)。此后,nslookup oldserver
显示新服务器的预期 IP 地址,但 Windows 资源管理器仍会在其名称下看到旧服务器。
我猜想这与 WINS 以及 NetBIOS 名称解析的工作方式有关,但我不知道还能尝试什么。
注意这是关于方式一个客户看到网络,所以我认为这一定是可能的不要对相关服务器进行任何更改,仅限客户端。
答案1
尝试在以下注册表项中新闻服务器
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
DWORD name: DisableStrictNameChecking
DWORD value: 1
若未设置,出于安全原因,您的文件服务器将不会在不是自己的 DNS 名称上提供文件内容。
编辑:我也要在 Windows 7 上停用 WINS/NetBios,因为它会绕过您的本地主机文件/nslookup。nslookup 检查 DNS/主机文件,如果资源管理器显示错误内容,则计算机会得到 WINS 的答复。