«Устройства 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

Я надеюсь, что это решение поможет вам в качестве обходного пути.

Другие вопросы по тегам