“Устройства DOS” в каталог (так называемый постоянный SUBST) не учитываются после обновления Windows 21H1

Вопрос или проблема

Ранее была установлена карта устройства с использованием HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices, чтобы добавить псевдоним от D:\ к C:\Build. Этот подход обсуждается в статье SUBST в википедии и аналогичных источниках.

После обновления до Windows 21H1 эта настройка реестра была удалена1, и даже после повторного добавления настройки устройство “D:” не определяется в Проводнике, PowerShell или bash-git (mingw).

После установки раздел реестра “DOS Devices” был обновлён1, чтобы добавить ключ реестра, показанный ниже. Однако это, похоже, не сработало. Как я могу восстановить эту функциональность ‘постоянного subst’ для целевого каталога?

Name   Value
D:     \\??\C:\Build
  • 1 https://www.satsignal.eu/software/Win-10-notes.html отмечает, что “DOS Devices” удаляются и должны быть вручную добавлены обратно (в версии Windows 10 сборки 2004). Не упоминается о том, что эта функциональность была удалена. Я заново добавил запись DOS Devices, но смонтированный диск по-прежнему не отображается.

  • Использование WinObj (от Winternals) показывает правильное имя и целевой символический линк в GLOBAL?? для “D:”.

  • Каталог “C:\Build” существует с стандартными разрешениями (например, SYSTEM полный контроль, Authenticated Users почти полный контроль, Users с доступом на чтение).

  • Это было инсталляционное обновление Windows 10 до 21H1. Предыдущая версия, вероятно, была Windows 10 сборки 1909, и это определенно не была 20H2.

  • Использование net use или его эквивалента не является альтернативным решением в этом случае. Доступ должен быть псевдонимом на уровне ядра/драйвера для обеспечения полного доступа к файловой системе с максимальной производительностью и характеристиками.

При наличии записи “DOS Devices” в Windows 21H1 устройство “D:” по-прежнему каким-то образом известно Windows и не может использоваться с командой SUBST, даже если оно не перечисляется или недоступно другим образом.

C:\Users\me>subst X: C:\Build

C:\Users\me>subst D: C:\Build
Недопустимый параметр - D:

C:\Users\me>D:
Система не может найти указанный диск.

По предложенному ответу был попытка использовать New-PSDrive. Однако этот подход, похоже, не является подходящей заменой по как минимум двум причинам:

  • В отличие от SUBST, New-PSDrive -Name "D" -PSProvider "FileSystem" -Root "C:\Build" не отображается различными программами в одной сессии. Например, новый диск “D:” не будет отображаться в Проводнике Windows.

  • New-PSDrive .. -Persist работает только с сетевыми файловыми системами (даже если локальными). Это неприемлемо для общего использования из-за снижения производительности и функциональности файловой системы.

Используйте PowerShell New-PSDrive вместо этого

New-PSDrive -Name "D" -PSProvider "FileSystem" -Root "\\localhost\c$\Build" -Persist

Опция -Persist сделает диск постоянным. Вы также можете убрать её, чтобы сделать временным диском, как и с subst, и затем

  • поместить команду в профиль (запустите notepad $PROFILE, чтобы открыть его или создать, если он недоступен), чтобы запускать её каждый раз при старте PowerShell, или
  • добавить команду в планировщик задач, чтобы запускать при входе в систему/старте/чем угодно

@user2864740:

Я сталкивался с аналогичной проблемой и также заметил, что при использовании SUBST некоторые приложения не могли распознать новую букву.

Затем, когда я использовал команду net use, я понял, что система определяет мой диск как уже назначенный (но не виден в проводнике файлов). Я могу предположить, что запись реестра зарезервировала букву, но она не могла быть использована даже после использования команды SUBST, которая, похоже, работала, потому что она отображалась в проводнике Windows, когда диск был доступен для доступа к файлам, но не для некоторых приложений.

Чтобы решить эту проблему, мне пришлось

  • удалить запись из РЕЕСТРА
  • перезагрузить компьютер
  • сопоставить букву диска с помощью SUBST

Надеюсь, это решение поможет вам как временная мера.

Ответ или решение

Проблема с использованием устройств DOS (DOS Devices) через реестр Windows после обновления до версии 21H1 является актуальной и сложной для решения. Давайте разберем эту ситуацию более подробно, керуясь принципом FOREST — факты, выводы, объяснения, рекомендации, исследования и терминология.

Факты о проблеме

После обновления Windows до версии 21H1 запись в реестре по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices, которая использовалась для установления соединения между диском D: и каталогом C:\Build, была удалена. Вы повторно добавили нужные значения в реестр, но устройство D: по-прежнему не отображается в стандартных инструментах, таких как Проводник, PowerShell или git bash.

Выводы

Очевидно, что привязка символических ссылок, заключенная в рамках DOS Devices, после обновления Windows потеряла свою функциональность. Это свидетельствует о возможных изменениях в управлении устройствами и символьными ссылками со стороны самой системы операционной среды, что могло повлиять на общую совместимость и стабильность ранее используемых решений.

Объяснение причины

Когда вы обновляете систему, некоторые настройки и параметры могут изменяться или удаляться, особенно если система переходит между значительными мажорными версиями. В вашем случае обновление Windows до версии 21H1 привело к удалению реестровых значений, отвечающих за функциональность DOS Devices. Добавление новых значений не возобновляет соответствующее поведение, поскольку операционная система, вероятно, не обрабатывает эти значения должным образом, исходя из изменений, принятых в новой версии.

Рекомендации по решению проблемы

  1. Удаление старых записей: Если у вас есть записи в реестре, связанные с устройством D: из раздела DOS Devices, попробуйте удалить их, перезагрузить компьютер и снова добавить запись для D:. Это может помочь сбросить состояние.

  2. Использование командной строки: Запустите cmd с повышенными правами и попробуйте выполнить subst для D: еще раз после удаления предыдущих записей. Если система все еще не распознает D:, переходите к следующим шагам.

  3. Проверка наличия конфликтов: Используйте команду net use в cmd, чтобы проверить, не занято ли имя D: другим приводом или томом. Если так, это может быть источником конфликта.

  4. Создание ярлыка для папки: Как временное решение, вы можете создать ярлык для C:\Build, помещенный на рабочий стол, что обеспечит быстрый доступ к этой папке.

  5. Переход на символические ссылки: Если проблема с DOS Devices не решается, вам стоит рассмотреть возможность использования символических ссылок, которые были введены в Windows начиная с версии Vista и имеют поддержку в современных версиях. Вы можете использовать команду mklink для создания символической ссылки:

    mklink /D D: C:\Build

Исследования и дополнительные шаги

Если все предложенные решения не помогут, возможно, стоит изучить другие источники информации на форумах и веб-ресурсах, например, специализированные сообщества, обсуждающие проблемы после обновлений Windows. Обязательно проверяйте официальные документы Microsoft для обновлений о проблемах с устройствами и реестром.

Терминология

  • DOS Devices — это раздел реестра, используемый для создания символических ссылок на каталоги и устройства.
  • SUBST — команда, позволяющая присваивать буквенные обозначения директориям.
  • Символическая ссылка — это специальный файл, который указывает на другой файл или папку, позволяющий обращаться к ним как к стандартным файловым системам.

Таким образом, проанализировав текущую проблему и предложив несколько решений, вы сможете восстановить функциональность и доступ к папке C:\Build, соответствующим образом адаптировав ваши рабочие процессы под изменения, принятые в Windows, что, несомненно, создаст более стабильную оболочку для вашей работы.

Оцените материал
Добавить комментарий

Капча загружается...