Две недели назад наш ИТ-отдел перенес огромную сетевую папку со старого сервера на новый. Например, старая папка была доступна в
\\oldserver\ourfolder
и новый под
\\newserver\ourfolder
Обратите внимание, что старый сервер все еще используется и виден в сети наших компаний, \\oldserver\ourfolder
был заархивирован и удален с сервера.
Теперь мы обнаружили, что есть несколько файлов (на самом деле файлы САПР в каком-то проприетарном двоичном формате) с жестко закодированными ссылками, указывающими на расположение старой папки. Поскольку таких файлов несколько, мы хотели бы написать программу для изменения этих ссылок на новое место. К сожалению, интерпретатор VBA САПР допускает это только тогда, когда файлы, на которые есть ссылки, видны по старому сетевому пути. В противном случае он остановит выполнение с сообщением об ошибке
Итак, нам нужен способ сделать "oldserver" псевдонимом для "newserver". Это нужно делать только временно и только для одной машины (клиента Windows 7), поэтому нашей первой идеей было использовать hosts
и lmhosts
файлы для этого. Но это, видимо, не работает. Мы добавили строку формы
<new.server.ip.address> oldserver
в файл hosts и
<new.server.ip.address> oldserver #PRE
в файл lmhosts. ping oldserver
затем показывает новый IP-адрес, но это не влияет на общие сетевые папки, например, отображаемые проводником Windows или другими приложениями, такими как наше приложение САПР.
Во-вторых, мы попытались настроить изолированный DNS-сервер на локальном компьютере со старым сервером, указывающим на IP-адрес нового, и используя «127.0.0.1» в качестве предпочтительного DNS (и нет, мы не забыли сбросить Кеш DNS от ipconfig /flushdns
). После этого, nslookup oldserver
показывает ожидаемый IP-адрес нового сервера, но проводник Windows по-прежнему видит старый сервер под своим именем.
Я предполагаю, что это как-то связано с WINS и тем, как работает разрешение имен NetBIOS, но я понятия не имею, что я мог бы попробовать еще.
Обратите внимание, это о способе один клиент видит сеть, так что думаю это возможно ничего не менять на задействованных серверах, только клиент.
Попробуйте этот ключ реестра в новый сервер
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
DWORD name: DisableStrictNameChecking
DWORD value: 1
Если не задано, ваш файловый сервер не будет обслуживать содержимое файла на DNS-имени не как на его собственное, по соображениям безопасности.
Изменить: я бы также отключил WINS / NetBios в Windows 7, так как он обходит ваш локальный файл хоста / nslookup. Nslookup проверяет DNS / hostfile, и если проводник показывает плохое содержимое, то полученный компьютер отвечает WINS.