«Устройства DOS» в каталоге (также известном как постоянный SUBST) не учитываются после обновления Windows 21H1.
Ранее сопоставление устройств устанавливалось с помощьюHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices
добавить псевдоним изD:\
кC:\Build
. Этот подход обсуждается в статье Википедии SUBST и подобных.
После обновления до Windows 21H1 этот параметр реестра был удален 1, и даже после повторного добавления параметра устройство «D:» не перечисляется в Explorer, powershell или bash-git (mingw).
После установки раздел реестра «Устройства DOS» был обновлен 1 и добавлен ключ реестра, показанный ниже. Однако, похоже, это не имеет эффекта. Как я могу восстановить эту «постоянную подстановку» в целевом каталоге?
Name Value
D: \\??\C:\Build
1 https://www.satsignal.eu/software/Win-10-notes.html отмечает, что «Устройства DOS» удалены и их необходимо добавить обратно вручную (в Windows 10, сборка 2004). В нем не упоминается об удалении этой функции. Я снова добавил запись «Устройства DOS», но подключенный диск по-прежнему не отображается.
Использование WinObj (от Winternals) показывает правильное имя и цель символической ссылки в
GLOBAL??
для «Д:».Каталог «C:\Build» существует со стандартными разрешениями (например, полный доступ к системе, почти полный доступ для прошедших проверку пользователей, пользователи с доступом на чтение).
Это было обновление Windows 10 до версии 21H1 на месте. Предыдущей версией, вероятно, была Windows 10, сборка 1909, и это определенно не 20H2.
Или
net use
или эквивалент не является альтернативным решением в данном случае. Доступ должен быть псевдонимом на уровне ядра/драйвера, чтобы обеспечить полную производительность и возможности базовой файловой системы.
Благодаря записи «Устройства DOS» в Windows 21H1 устройство «D:» по-прежнему каким-то образом известно Windows и не может использоваться с командой SUBST, даже если оно не перечисляется или не доступно иным образом.
C:\Users\me>subst X: C:\Build
C:\Users\me>subst D: C:\Build
Invalid parameter - D:
C:\Users\me>D:
The system cannot find the drive specified.
Согласно предложенному ответу,New-PSDrive
была предпринята попытка. Однако этот подход не кажется подходящей заменой по крайней мере по двум причинам:
В отличие от
SUBST
,New-PSDrive -Name "D" -PSProvider "FileSystem" -Root "C:\Build"
не перечисляется разными программами в одном сеансе. Например, новый диск «D:» не будет отображаться в проводнике Windows.New-PSDrive .. -Persist
работает только в сетевых файловых системах (даже если локальных). Это непригодно для общего использования из-за снижения производительности и ограниченных возможностей файловой системы.
1 ответ
@user2864740:
Я боролся с той же проблемой, а также заметил, что при использовании SUBST некоторые приложения не могли распознать новую букву.
Затем, когда я использовал команду net use, я понял, что система определяет мой диск как уже назначенный (но не видимый в проводнике). Я могу себе представить, что запись реестра зарезервировала букву, но ее нельзя было использовать даже после использования команды SUBST, которая, похоже, работает, потому что она отображалась в проводнике Windows, когда диск можно было использовать для доступа к файлам, но не для некоторых приложений.
Чтобы решить эту проблему, мне пришлось
- удалить запись из РЕЕстра
- перезагрузить мой компьютер
- сопоставить букву моего диска с помощью SUBST
Я надеюсь, что это решение поможет вам в качестве обходного пути.