Вопрос или проблема
Ранее была установлена карта устройства с использованием 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. Добавление новых значений не возобновляет соответствующее поведение, поскольку операционная система, вероятно, не обрабатывает эти значения должным образом, исходя из изменений, принятых в новой версии.
Рекомендации по решению проблемы
-
Удаление старых записей: Если у вас есть записи в реестре, связанные с устройством
D:
из раздела DOS Devices, попробуйте удалить их, перезагрузить компьютер и снова добавить запись дляD:
. Это может помочь сбросить состояние. -
Использование командной строки: Запустите
cmd
с повышенными правами и попробуйте выполнитьsubst
дляD:
еще раз после удаления предыдущих записей. Если система все еще не распознаетD:
, переходите к следующим шагам. -
Проверка наличия конфликтов: Используйте команду
net use
вcmd
, чтобы проверить, не занято ли имяD:
другим приводом или томом. Если так, это может быть источником конфликта. -
Создание ярлыка для папки: Как временное решение, вы можете создать ярлык для
C:\Build
, помещенный на рабочий стол, что обеспечит быстрый доступ к этой папке. -
Переход на символические ссылки: Если проблема с DOS Devices не решается, вам стоит рассмотреть возможность использования символических ссылок, которые были введены в Windows начиная с версии Vista и имеют поддержку в современных версиях. Вы можете использовать команду
mklink
для создания символической ссылки:mklink /D D: C:\Build
Исследования и дополнительные шаги
Если все предложенные решения не помогут, возможно, стоит изучить другие источники информации на форумах и веб-ресурсах, например, специализированные сообщества, обсуждающие проблемы после обновлений Windows. Обязательно проверяйте официальные документы Microsoft для обновлений о проблемах с устройствами и реестром.
Терминология
- DOS Devices — это раздел реестра, используемый для создания символических ссылок на каталоги и устройства.
- SUBST — команда, позволяющая присваивать буквенные обозначения директориям.
- Символическая ссылка — это специальный файл, который указывает на другой файл или папку, позволяющий обращаться к ним как к стандартным файловым системам.
Таким образом, проанализировав текущую проблему и предложив несколько решений, вы сможете восстановить функциональность и доступ к папке C:\Build
, соответствующим образом адаптировав ваши рабочие процессы под изменения, принятые в Windows, что, несомненно, создаст более стабильную оболочку для вашей работы.